当前位置:   article > 正文

【Numpy】sort、argsort、lexsort、partition、sorted_numpy中的数组的方法sort,argsort,lexsort分别是指

numpy中的数组的方法sort,argsort,lexsort分别是指

排序(sort、argsort、lexsort、partition、sorted)参数讲解

参考博客:https://blog.csdn.net/haiyang_duan/article/details/79221458#commentBox

argsort函数

  1. >>> import numpy
  2. >>> help(numpy.argsort)
  3. Help on function argsort in module numpy.core.fromnumeric:
  4. argsort(a, axis=-1, kind='quicksort', order=None)
  5. Returns the indices that would sort an array.
  6. Perform an indirect sort along the given axis using the algorithm specified
  7. by the `kind` keyword. It returns an array of indices of the same shape as
  8. `a` that index data along the given axis in sorted order.

从中可以看出argsort函数返回的是数组值从小到大的索引值

Examples:

One dimensional array:一维数组

  1. >>> x = np.array([3, 1, 2])
  2. >>> np.argsort(x)
  3. array([1, 2, 0])

Two-dimensional array:二维数组

  1. >>> x = np.array([[0, 3], [2, 2]])
  2. >>> x
  3. array([[0, 3],
  4. [2, 2]])
  5. >>> np.argsort(x, axis=0) #按列排序
  6. array([[0, 1],
  7. [1, 0]])
  8. >>> np.argsort(x, axis=1) #按行排序
  9. array([[0, 1],
  10. [0, 1]]

Examples:

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

另一种方式实现按降序排序:

  1. >>> a = x[np.argsort(x)]
  2. >>> a
  3. array([1, 2, 3])
  4. >>> a[::-1]
  5. 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()]

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/648929
推荐阅读
相关标签
  

闽ICP备14008679号