Python中的numpy.argsort()用法示例

NumPy模块提供了一个函数argsort(), 返回将对数组进行排序的索引。
NumPy模块提供了一个功能, 用于借助关键字指定的算法与给定的轴一起执行间接排序。此函数返回形状与” a” 相同的索引数组, 该数组将对该数组进行排序。
句法

numpy.argsort(a, axis=-1, kind=None, order=None)

参数
这些是numpy.argsort()函数中的以下参数:
【Python中的numpy.argsort()用法示例】一个:array_like
此参数定义我们要排序的源数组。
轴:int或无(可选)
此参数定义执行排序所沿的轴。默认情况下, 轴为-1。如果我们将此参数设置为None, 则使用扁平化的数组。
种类:{‘ quicksort’ , ‘ mergesort’ , ‘ heapsort’ , ‘ stable’ }(可选)
此参数定义排序算法。默认情况下, 该算法为quicksort。 mergesort和稳定都在后台使用时间排序。实际的实现将随数据类型而变化。保留mergesort选项是为了向后兼容。
命令:str或str列表(可选)
如果” a” 是具有已定义字段的数组, 则此参数指定要比较的字段的第一个, 第二个等。单个字段可以指定为字符串, 而不必指定所有字段。但是未指定的字段仍将按照它们在dtype中出现的顺序使用, 以打破联系。
返回:index_array:ndarray, int
此函数返回一个索引数组, 该索引与指定的轴一起对” a” 进行排序。如果” a” 为一维, 则a [index_array]产生排序的” a” 。更一般而言, np.take_along_axis(arr1, index_array, axis = axis)始终产生排??序的” a” , 而与维数无关。
示例1:np.argsort()
import numpy as npa=np.array([456, 11, 63])ab=np.argsort(a)b

在上面的代码中
  • 我们导入了别名为np的numpy。
  • 我们使用np.array()函数创建了一个数组’ a’ 。
  • 我们已经声明了变量” b” 并分配了np.argsort()函数的返回值。
  • 我们已经在函数中传递了数组” a” 。
  • 最后, 我们尝试打印b的值。
在输出中, 显示了一个ndarray, 其中包含索引(指示已排序数组的元素的位置)和dtype。
输出
array([456, 11, 63])array([1, 2, 0], dtype=int64)

示例2:对于二维数组(沿第一个轴(向下)排序)
import numpy as npa = np.array([[0, 5], [3, 2]])indices = np.argsort(a, axis=0)indices

输出
array([[0, 1], [1, 0]], dtype=int64)

示例3:对于二维数组(轴= 0的替代)
import numpy as npa = np.array([[0, 5], [3, 2]])indices = np.argsort(a, axis=0)indicesnp.take_along_axis(a, indices, axis=0)

在上面的代码中
  • 我们导入了别名为np的numpy。
  • 我们使用np.array()函数创建了一个二维数组’ a’ 。
  • 我们已经声明了变量索引并分配了np.argsort()函数的返回值。
  • 我们将二维数组’ a’ 和轴传递为0。
  • 接下来, 我们使用take_along_axis()函数并传递源数组, 索引和轴。
  • 该函数返回了排序后的二维数组。
在输出中, 显示了带有排序元素的二维数组。
输出
array([[0, 2], [3, 5]])

示例4:对于二维数组(沿最后一个轴(交叉)排序)
import numpy as npa = np.array([[0, 5], [3, 2]])indices = np.argsort(a, axis=1)indices

输出
array([[0, 1], [1, 0]], dtype=int64)

示例5:对于二维数组(轴= 1的替代项)
import numpy as npa = np.array([[0, 5], [3, 2]])indices = np.argsort(a, axis=1)indicesnp.take_along_axis(a, indices, axis=1)

输出
array([[0, 2], [3, 5]])

示例6:对于N-D阵列
import numpy as npa = np.array([[0, 5], [3, 2]])indices = np.unravel_index(np.argsort(a, axis=None), a.shape)indicesa[indices]# same as np.sort(a, axis=None)

输出
(array([0, 1, 1, 0], dtype=int64), array([0, 1, 0, 1], dtype=int64))array([0, 2, 3, 5])

在上面的代码中
  • 我们导入了别名为np的numpy。
  • 我们使用np.array()函数创建了一个二维数组’ a’ 。
  • 我们已经声明了一个变量’ indices’ 并分配了np.unravel_index()函数的返回值。
  • 我们已经传递了np.argsort()函数和数组’ a’ 的形状。
  • 我们已在argsort()函数中传递了二维数组’ a’ 和轴为1。
  • 接下来, 我们尝试打印index和a [indices]的值。
在输出中, 显示了具有已排序元素的N-D数组。
示例7:按键排序
import numpy as npa= np.array([(0, 5), (3, 2)], dtype=[('x', '< i4'), ('y', '< i4')])ab=np.argsort(a, order=('x', 'y'))bc=np.argsort(a, order=('y', 'x'))c

输出
array([(0, 5), (3, 2)], dtype=[('x', '< i4'), ('y', '< i4')])array([0, 1], dtype=int64)array([1, 0], dtype=int64)

在上面的代码中
  • 我们导入了别名为np的numpy。
  • 我们使用dtype = [(‘ x’ , ‘ < i4’ ), (‘ y’ , ‘ < i4’ )]的np.array()函数创建了一个二维数组’ a’ 。
  • 我们已经声明了变量” b” 和” c” , 并分配了np.argsort()函数的返回值。
  • 我们在函数中传递了数组” a” 并以参数作为顺序。
  • 最后, 我们尝试打印’ b’ 和’ c’ 的值。
在输出中, 已显示具有dtype = [(‘ x’ , ‘ < i4’ ), (‘ y’ , ‘ < i4’ )]的排序数组

    推荐阅读