首页 > 编程知识 正文

numpy的argsort,numpy argsort逆序

时间:2023-05-06 17:42:41 阅读:269665 作者:3075

官方文档:
https://docs.scipy.org/doc/numpy-1.15.0/reference/generated/numpy.argsort.html#numpy.argsort
argsort函数返回的是数组值从小到大的索引值

>>> x = np.array([3, 1, 2])>>>> np.argsort(x)array([1, 2, 0])>>> np.argsort(-x) #按降序排列array([0,2,1])>>> x[np.argsort(x)] #通过索引值排序后的数组array([1, 2, 3])

结果中1表示最小的数的索引是1对应数字1,2表示次小的索引是2对应数字2,最大的数据是索引0对应数字3。

>>> x = np.array([[0, 3], [2, 2]])>>> xarray([[0, 3], [2, 2]])>>> np.argsort(x, axis=0) #按列排序array([[0, 1], [1, 0]]) >>> np.argsort(x, axis=1) #按行排序 array([[0, 1], [0, 1]])

按列排序时,第二列是【3,2】从小到大的索引应该是【1,0】

连续两个argsort的用法

有时候我想得到矩阵中每个元素按列从大到小排序后,每个值排序后的索引,可以使用连续两个argsort实现

>>>a=np.array([2, 3, 5, 9, 10, 4])>>>a=a.reshape((3,2))>>一分快三技巧;> xarray([[0, 3], [2, 2]])>>> np.argsort(x, axis=0) #按列排序array([[0, 1], [1, 0]]) >>> np.argsort(x, axis=1) #按行排序 array([[0, 1], [0, 1]])

按列排序时,第二列是【3,2】从小到大的索引应该是【1,0】

连续两个argsort的用法

有时候我想得到矩阵中每个元素按列从大到小排序后,每个值排序后的索引,可以使用连续两个argsort实现

>>>a=np.array([2, 3, 5, 9, 10, 4])>>>a=a.reshape((3,2))>>>aarray([[ 2, 3], [ 5, 9], [10, 4]])>>>(-a).argsort(axis=0).argsort(axis=0)#从大到小array([[2, 2], [1, 0], [0, 1]], dtype=int64)

拿第一列来看,10最大索引为0, 2最小索引为2

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。