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]])