有两个数组:
X = np.array([[1,2,3], [2,3,1]])
X
array([[1, 2, 3],
[2, 3, 1]])
Y = np.array([['A','B', 'C'], ['A','B', 'C']])
Y
array([['A', 'B', 'C'],
['A', 'B', 'C']],
dtype='|S1')
我试图基于X行的值逐行排序Y而不循环遍历每一行,即
xord = X.argsort()
for i in range(X.shape[0]):
print Y[i][xord[i]]
['A' 'B' 'C']
['C' 'A' 'B']
是否有更有效的方法根据X的相应行顺序对数组Y进行排序?
答案 0 :(得分:2)
首先,您可以使用np.argsort
根据排序后的位置获取X
元素的索引,然后您可以根据{{1}的索引从Y
获取元素与X
:
np.take()