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)