Python 查找将对numpy列进行排序的索引将返回零
我正在尝试使用函数Python 查找将对numpy列进行排序的索引将返回零,python,numpy,Python,Numpy,我正在尝试使用函数argsort获取将对数组中的每列进行排序的索引。然而,它只是简单地返回零,而不是真正的索引。例如: x = np.matrix([[5, 2, 6], [3, 4, 1]]) print(x) print(x[:,0]) print(x[:,1]) print(x[:,2]) print(x[:,0].argsort()) print(x[:,1].argsort()) print(x[:,2].argsort()) 我预计这将返回三个数组[10],[01]和[10]表
argsort
获取将对数组中的每列进行排序的索引。然而,它只是简单地返回零,而不是真正的索引。例如:
x = np.matrix([[5, 2, 6], [3, 4, 1]])
print(x)
print(x[:,0])
print(x[:,1])
print(x[:,2])
print(x[:,0].argsort())
print(x[:,1].argsort())
print(x[:,2].argsort())
我预计这将返回三个数组[10]
,[01]
和[10]
表示每列的索引(如果已排序),但是,我得到了三个数组,它们都包含零
非常感谢任何帮助 用切片索引一个
矩阵
总是返回另一个2-d矩阵
。(此行为与常规numpy数组不同。)例如,请参见x[:,0]
:
In [133]: x[:,0]
Out[133]:
matrix([[5],
[3]])
x[:,0]
是一个具有形状(2,1)的矩阵。
要对该矩阵的第一(也是唯一)列进行argsort,必须告诉argsort使用第一个轴:
In [135]: x[:,0].argsort(axis=0)
Out[135]:
matrix([[1],
[0]])
默认(axis=-1
)使用最后一个轴,由于该矩阵中的行的长度为1,因此未给出axis
时的结果是一列零
顺便说一下,您可以一次完成所有列:
In [138]: x
Out[138]:
matrix([[5, 2, 6],
[3, 4, 1]])
In [139]: x.argsort(axis=0)
Out[139]:
matrix([[1, 0, 1],
[0, 1, 0]])