NumPy直接排序sort()的使用方法

2024年3月21日18:53:37NumPy直接排序sort()的使用方法已关闭评论

NumPy的排序有直接排序和间接排序。直接排序是对数据直接进行排序,间接排序是指根据一个或多个键值对对数据进行排序。直接排序使用sort(),间接排序使用argsort()和lexsort()。

sort()

sort()是常用的排序方法。其中numpy.sort()调用后不会改变原始数组,返回数组的排序副本。ndarray.sort()调用后改变原始数组,无返回值。

格式:

numpy.sort(a,axis=-1,kind='quicksort',order=None)  #形式1 
ndarray.sort(axis=-1,kind='quicksort',order=None)  #形式2

其中参数含义如下。

a:要排序的数组。

axis:使得sort()可以沿着指定轴对数据集进行排序。axis=1为沿横轴(按行)排序,axis=0为沿纵轴(按列)排序,axis=None为将数组展开后进行排序。

kind:排序算法,默认为quicksort,表示使用快速排序算法。

order:如果数组包含字段,则字段是要排序的字段。

例如:

import numpy as np 
a = np.array([7, 9, 5, 2, 9, 4, 3, 1, 4, 3])  
print('原数组:', a)  
a.sort()                                    #第2种形式,等价于a=np.sort(a) 
print('排序后: ', a)

输出结果:

原数组: [7 9 5 2 9 4 3 1 4 3] 
排序后:  [1 2 3 3 4 4 5 7 9 9]

sort()带参数轴的排序,示例程序如下:

import numpy as np 
a = np.array([[4, 2, 9, 5], [6, 4, 8, 3], [1, 6, 2, 4]])  
print('原数组:', a)  
a.sort(axis=1)             #axis=1代表沿横轴(按行)排序 
print('排序后: ', a)

输出结果:

原数组: 
 [[4 2 9 5] 
 [6 4 8 3] 
 [1 6 2 4]] 
排序后:  
 [[2 4 5 9] 
 [3 4 6 8] 
 [1 2 4 6]]

sort()中有排序字段,示例程序如下。

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

输出结果:

按 name 排序: 
[(b'amar', 27) (b'anil', 25) (b'raju', 21) (b'ravi', 17)] 
[(b'ravi', 17) (b'raju', 21) (b'anil', 25) (b'amar', 27)]
  • 版权声明:本篇文章(包括图片)来自网络,由程序自动采集,著作权(版权)归原作者所有,如有侵权联系我们删除,联系方式(QQ:452038415)。