NumPy 教程 之 NumPy 排序、条件筛选函数 1

简介: NumPy提供了多种排序方法,包括快速排序、归并排序与堆排序等,每种方法在速度、最坏情况性能、工作空间及稳定性方面各有特点。`numpy.sort()`函数可返回数组排序副本,支持沿指定轴排序及字段排序。示例展示了如何对二维数组及含字段的数组进行排序操作。

NumPy 教程 之 NumPy 排序、条件筛选函数 1

NumPy 排序、条件筛选函数

NumPy 提供了多种排序的方法。 这些排序函数实现不同的排序算法,每个排序算法的特征在于执行速度,最坏情况性能,所需的工作空间和算法的稳定性。 下表显示了三种排序算法的比较。

种类 速度 最坏情况 工作空间 稳定性
'quicksort'(快速排序) 1 O(n^2) 0 否
'mergesort'(归并排序) 2 O(nlog(n)) ~n/2 是
'heapsort'(堆排序) 3 O(n
log(n)) 0 否

numpy.sort()

numpy.sort() 函数返回输入数组的排序副本。函数格式如下:

numpy.sort(a, axis, kind, order)

参数说明:

a: 要排序的数组
axis: 沿着它排序数组的轴,如果没有数组会被展开,沿着最后的轴排序, axis=0 按列排序,axis=1 按行排序
kind: 默认为'quicksort'(快速排序)
order: 如果数组包含字段,则是要排序的字段

实例

import numpy as np

a = np.array([[3,7],[9,1]])
print ('我们的数组是:')
print (a)
print ('\n')
print ('调用 sort() 函数:')
print (np.sort(a))
print ('\n')
print ('按列排序:')
print (np.sort(a, axis = 0))
print ('\n')

在 sort 函数中排序字段

dt = np.dtype([('name', 'S10'),('age', int)])
a = np.array([("raju",21),("anil",25),("ravi", 17), ("amar",27)], dtype = dt)
print ('我们的数组是:')
print (a)
print ('\n')
print ('按 name 排序:')
print (np.sort(a, order = 'name'))

输出结果为:

我们的数组是:
[[3 7]
[9 1]]

调用 sort() 函数:
[[3 7]
[1 9]]

按列排序:
[[3 1]
[9 7]]

我们的数组是:
[(b'raju', 21) (b'anil', 25) (b'ravi', 17) (b'amar', 27)]

按 name 排序:
[(b'amar', 27) (b'anil', 25) (b'raju', 21) (b'ravi', 17)]

目录
相关文章
|
测试技术
Apifox
体验了一款神器
699 0
Apifox
|
存储 Prometheus 监控
高可用prometheus集群方案选型分享
高可用prometheus集群方案选型分享
7184 2
高可用prometheus集群方案选型分享
|
机器学习/深度学习 数据采集 算法
时间序列结构变化分析:Python实现时间序列变化点检测
在时间序列分析和预测中,准确检测结构变化至关重要。新出现的分布模式往往会导致历史数据失去代表性,进而影响基于这些数据训练的模型的有效性。
1436 1
|
机器学习/深度学习 PyTorch 算法框架/工具
深度学习之格式转换笔记(一):模型文件pt转onnx转tensorrt格式实操成功
关于如何将深度学习模型从PyTorch的.pt格式转换为ONNX格式,然后再转换为TensorRT格式的实操指南。
2074 0
深度学习之格式转换笔记(一):模型文件pt转onnx转tensorrt格式实操成功
|
机器学习/深度学习 人工智能 自然语言处理
深度学习入门:用Python实现一个简单的神经网络
【8月更文挑战第31天】本文将引导你走进深度学习的世界,通过Python代码示例,我们将一起构建并训练一个简单的神经网络。文章不仅会解释核心概念,还会展示如何将这些理论应用到实际的编程中。无论你是初学者还是有一定基础的学习者,这篇文章都将为你提供宝贵的学习资源。
|
Python
都2024年了,还不知道如何选本地Python开发环境管理工具
文章介绍了几种Python开发环境管理工具,包括Virtualenv、Pipenv和Anaconda,并推荐了Pipenv和Anaconda,解释了它们的安装和使用方法,帮助读者选择适合自己的工具来管理Python开发环境。
1084 0
|
搜索推荐 Java 开发者
从 Java 小白到大神:一文带你搞懂子类如何“继承”父类江山,开创新世界!
【6月更文挑战第16天】Java中的继承是面向对象的核心,它允许子类继承父类的属性和方法,提高代码复用。通过实例,如`Animal`和`Dog`类,显示了如何创建和覆盖方法。继承不仅简化代码,还支持多态性,是构建可扩展系统的关键。从新手到专家,掌握继承意味着掌握编程的强大工具,能解锁更复杂的系统设计和优化。
326 3
|
机器学习/深度学习 PyTorch 算法框架/工具
使用PyTorch处理多维特征输入的完美指南
使用PyTorch处理多维特征输入的完美指南
使用PyTorch处理多维特征输入的完美指南
|
数据可视化 定位技术 Python
Matplotlib与其他可视化库的对比与选择
【4月更文挑战第17天】本文对比了Python中的四个数据可视化库:Matplotlib(基础且高度定制)、Seaborn(基于Matplotlib,提供美观统计图表)、Plotly(交互式,支持3D和地图)和Bokeh(用于Web的交互式图表)。选择取决于灵活性、美观性、交互性和学习成本。根据具体需求,如快速生成图表或创建交互式Web可视化,用户可挑选最适合的库。
|
IDE 数据可视化 数据挖掘
Jupyter Notebook使用教程——从Anaconda环境构建到Markdown、LaTex语法介绍
Jupyter Notebook使用教程——从Anaconda环境构建到Markdown、LaTex语法介绍
4628 3