首页 > 编程笔记

Numpy数组排序:sort()与argsort()

在进行数组操作的时候我们可能需要对数组进行排序和查询。排序中需要注意是按行排序,还是按列排序,或者是整体排序。

1. sort()排序

这里需要特别注意的是,sort 方法中 axis 参数指的是排序的方向,0 指按行进行操作,1 指按列进行操作。示例代码如下。
In [1]: import numpy as np
In [2]: a = np.array([[1,4],
   ...:               [3,2]]) 
因为当 axis=0 时比较小的值排在第 1 行,比较大的值排在第 2 行。
In [3]: np.sort(a,axis=0)  # 按行排序
Out[3]: 
array([[1, 2],
       [3, 4]])
当 axis=1 时比较小的值排在第 1 列,而比较大的值则排在第 2 列。
In [4]: np.sort(a,axis=1)  # 按列排序
Out[4]: 
array([[1, 4],
       [2, 3]]) 
当 axis=None 时,按整体进行排序,数组将会被压缩为一个序列。
In [5]: np.sort(a,axis=None)  # 整体排序
Out[5]: array([1, 2, 3, 4]) 

2. argsort()排序

argsort 方法用来返回排序的值,这个值代表了该值在该排序方式下的顺序,会根据 axis 设置的不同方式返回不同的值。
In [6]: np.argsort(a,axis=0)  # 按行返回元素序号
Out[6]: 
array([[0, 1],
       [1, 0]], dtype=int64)
In [7]: np.argsort(a,axis=1)  # 按列返回元素序号
Out[7]: 
array([[0, 1],
       [1, 0]], dtype=int64)
In [8]: np.argsort(a,axis=None)  # 整体返回元素序号
Out[8]: array([0, 3, 2, 1], dtype=int64) 

优秀文章