numpyargsort()函数
NumPy模块提供了一个函数argsort(),返回将对数组进行排序的索引。
NumPy模块提供了一个函数,用于借助关键字指定的算法与给定的轴一起执行间接排序。此函数返回与'a'形状相同的索引数组,该数组将对该数组进行排序。
语法
numpy.argsort(a, axis=-1, kind=None, order=None)
参数
这些是numpy.argsort()函数中的以下参数:
a:array_like
此参数定义我们要排序的源数组。
axis : int或None(可选)
此参数定义执行排序所沿的轴。默认情况下,轴为-1。如果我们将此参数设置为None,则将使用扁平化的数组。
kind:{'quicksort','mergesort','heapsort','stable'}(可选)
此参数定义排序算法。默认情况下,该算法为快速排序。 合并排序和稳定都使用时间排序。实际的实现将随数据类型而变化。保留 mergesort 选项是为了向后兼容。
order:str或str列表(可选)
返回: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 np a=np.array([456,11,63]) a b=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 np a = np.array([[0, 5], [3, 2]]) indices = np.argsort(a, axis=0) indices
输出:
array([[0, 1],
[1, 0]], dtype=int64)
示例3:二维数组排序(axis= 0)
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)
在上面的代码中
- 我们导入了别名为np的numpy。
- 我们已经使用np.array()函数创建了一个二维数组'a'。
- 我们已经声明了变量索引并分配了np.argsort()函数的返回值。
- 我们已将二维数组'a'和轴传递为0。
- 接下来,我们使用take_along_axis()函数并传递源数组,索引和轴。
- 此函数返回了排序后的二维数组。
在输出中,显示了带有排序元素的二维数组。
输出:
array([[0, 2],
[3, 5]])
示例4:对于二维数组(axis= 1)
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)
示例5:二维数组排序(axis= 1)
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]])
示例6:对于N-D阵列
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])
在上面的代码中
- 我们导入了别名为np的numpy。
- 我们已经使用np.array()函数创建了一个二维数组'a'。
- 我们已经声明了一个变量'indices'并分配了np.unravel_index()函数的返回值。
- 我们已经传递了np.argsort()函数和数组'a'的形状。
- 我们已在argsort()函数中将二维数组'a'和轴设为1。
- 接下来,我们尝试打印index和a [indices]的值。
在输出中,显示了具有已排序元素的N-D数组。
示例7:按keys排序
import numpy as np a= np.array([(0, 5), (3, 2)], dtype=[('x', '<i4'), ('y', '<i4')]) a b=np.argsort(a, order=('x','y')) b c=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'并将order作为参数。
- 最后,我们尝试打印'b'和'c'的值。
在输出中,显示了一个排序数组,其类型为dtype = [('x','<i4'),('y','<i4')]
祝学习愉快! (发现内容有误?请选中要编辑的内容 -> 右键 -> 修改 -> 提交!帮助我们改进教程质量)
精选教程推荐
👇 以下精选教程可能对您有帮助,拓展您的技术视野
暂无学习笔记,成为第一个分享的人吧!
您的笔记将帮助成千上万的学习者