删重排序
(np.unique(np.array([23,1,1])))
Out[35]: array([ 1, 23])
list(np.unique(np.array([23,1,1])))
Out[36]: [1, 23]
numpy.argsort(a, axis=-1, kind=’quicksort’, order=None)
功能: 将矩阵a按照axis排序,并返回排序后的下标
参数 描述
: a:输入矩阵
axis 排序沿数组的(轴)方向,0表示按行,1表示按列,None表示展开来排序,默认值为-1,表示沿最后的轴排序
kind 排序的算法,提供了快排’quicksort’、混排’mergesort’、堆排’heapsort’, 默认为‘quicksort’
order 排序的字段名,可指定字段排序,默认为None
返回值: 输出排序后的下标
>>> x = np.array([3, 1, 2])
>>> np.argsort(x)
array([1, 2, 0])
>>import numpy as np
>>> x = np.array([3, 1, 2])
>>> a=np.argsort(x)
>>a #升序
#argsort函数返回的是数组值从小到大的索引值,[3, 1, 2]从小到大为[1,2,3],期对应的索引为[1,2,0]
array([1, 2, 0])
>>np.argsort(-x) #降序
array([0, 2, 1], dtype=int64)
>>x[a] #以排序后的顺序重构原数组
array([1, 2, 3])
#二维数组
>>x=np.array([[0,12,48],[4,18,14],[7,1,99]])
>>a1=np.argsort(x)
>>a1
array([[0, 1, 2],
[0, 2, 1],
[1, 0, 2]], dtype=int64)
#以排序后的顺序重构原数组,注意与一维数组的形式不一样
>>np.array([np.take(x[i],x[i].argsort())for i in range(3)])
array([[ 0, 12, 48],
[ 4, 14, 18],
[ 1, 7, 99]])
>>x[x[:,2].argsort()] #按照第三列对行进行排序
array([[ 4, 18, 14],
[ 0, 12, 48],
[ 7, 1, 99]])
>>x.T[x.T[:,2].argsort()].T #按照第三行对列进行排序
array([[12, 0, 48],
[18, 4, 14],
[ 1, 7, 99]])
>>x[:,x[2].argsort()] #还可以这样写
array([[12, 0, 48],
[18, 4, 14],
[ 1, 7, 99]])