基于另一个相同形状的2D数组对2D numpy数组(按行)进行排序

时间:2015-04-09 21:00:03

标签: python arrays sorting numpy

有两个数组:

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进行排序?

1 个答案:

答案 0 :(得分:2)

首先,您可以使用np.argsort根据排序后的位置获取X元素的索引,然后您可以根据{{1}的索引从Y获取元素与X

np.take()