赞
踩
参考博客:https://blog.csdn.net/haiyang_duan/article/details/79221458#commentBox
- >>> import numpy
- >>> help(numpy.argsort)
- Help on function argsort in module numpy.core.fromnumeric:
-
-
- argsort(a, axis=-1, kind='quicksort', order=None)
- Returns the indices that would sort an array.
-
- Perform an indirect sort along the given axis using the algorithm specified
- by the `kind` keyword. It returns an array of indices of the same shape as
- `a` that index data along the given axis in sorted order.
从中可以看出argsort函数返回的是数组值从小到大的索引值
Examples:
One dimensional array:一维数组
- >>> x = np.array([3, 1, 2])
- >>> np.argsort(x)
- array([1, 2, 0])
Two-dimensional array:二维数组
- >>> x = np.array([[0, 3], [2, 2]])
- >>> x
- array([[0, 3],
- [2, 2]])
-
- >>> np.argsort(x, axis=0) #按列排序
- array([[0, 1],
- [1, 0]])
-
- >>> np.argsort(x, axis=1) #按行排序
- array([[0, 1],
- [0, 1]]
Examples:
- >>> 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])
- >>> x[np.argsort(-x)]
- array([3, 2, 1])
另一种方式实现按降序排序:
- >>> a = x[np.argsort(x)]
- >>> a
- array([1, 2, 3])
- >>> a[::-1]
- array([3, 2, 1])
使用argsort实现按照某列对数组进行整体排序
按照某列排序
data = data[data[:,2].argsort()] #按照第3列对行排序
注意:argsort返回的只是排好序后的行索引,不会改变原数组。
按照某行进行排序,可以利用转置操作,代码如下所示:
data = data.T(data.T[:,2].argsort()).T # 按照第3行对列进行排序
也可以直接按行进行排序,代码如下:
data = data[:,data[2].argsort()]
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。