📅  最后修改于: 2020-10-27 08:06:04             🧑  作者: Mango
NumPy模块提供了一个函数argsort(),返回将对数组进行排序的索引。
NumPy模块提供了一个函数,用于借助关键字指定的算法与给定的轴一起执行间接排序。此函数返回与’a’形状相同的索引数组,该数组将对该数组进行排序。
numpy.argsort(a, axis=-1, kind=None, order=None)
这些是numpy.argsort()函数中的以下参数:
一个:array_like
此参数定义我们要排序的源数组。
轴:int或无(可选)
此参数定义执行排序所沿的轴。默认情况下,轴为-1。如果我们将此参数设置为None,则将使用扁平化的数组。
种类:{‘quicksort’,’mergesort’,’heapsort’,’stable’}(可选)
此参数定义排序算法。默认情况下,该算法为quicksort。 mergesort和稳定都在后台使用时间排序。实际的实现将随数据类型而变化。保留mergesort选项是为了向后兼容。
命令:str或str列表(可选)
如果’a’是具有已定义字段的数组,则此参数指定要比较的字段的第一个,第二个等。单个字段可以指定为字符串,而不必指定所有字段。但是未指定的字段仍将按照它们在dtype中出现的顺序使用,以打破联系。
该函数返回一个索引数组,该索引与指定的轴一起对“ a”进行排序。如果“ a”为一维,则a [index_array]产生排序的“ a”。更一般而言,np.take_along_axis(arr1,index_array,axis = axis)始终产生排序的“ a”,而与维数无关。
import numpy as np
a=np.array([456,11,63])
a
b=np.argsort(a)
b
在上面的代码中
在输出中,显示了一个ndarray,其中包含索引(指示已排序数组的元素的位置)和dtype。
输出:
array([456, 11, 63])
array([1, 2, 0], dtype=int64)
import numpy as np
a = np.array([[0, 5], [3, 2]])
indices = np.argsort(a, axis=0)
indices
输出:
array([[0, 1],
[1, 0]], dtype=int64)
import numpy as np
a = np.array([[0, 5], [3, 2]])
indices = np.argsort(a, axis=0)
indices
np.take_along_axis(a, indices, axis=0)
在上面的代码中
在输出中,显示了带有排序元素的二维数组。
输出:
array([[0, 2],
[3, 5]])
import numpy as np
a = np.array([[0, 5], [3, 2]])
indices = np.argsort(a, axis=1)
indices
输出:
array([[0, 1],
[1, 0]], dtype=int64)
import numpy as np
a = np.array([[0, 5], [3, 2]])
indices = np.argsort(a, axis=1)
indices
np.take_along_axis(a, indices, axis=1)
输出:
array([[0, 2],
[3, 5]])
import numpy as np
a = np.array([[0, 5], [3, 2]])
indices = np.unravel_index(np.argsort(a, axis=None), a.shape)
indices
a[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])
在上面的代码中
在输出中,显示了具有已排序元素的ND数组。
import numpy as np
a= np.array([(0, 5), (3, 2)], dtype=[('x', '
输出:
array([(0, 5), (3, 2)], dtype=[('x', '
在上面的代码中
在输出中,已显示排序后的数组,其中dtype = [(‘x’,’