重新排列2d numpy数组的每一行,并为每一行建立索引

时间:2019-02-26 23:50:23

标签: python arrays numpy

我有一个二维的numpy数组x

x = np.array([[6,7,8],                                             
              [9,10,11]])

我想用索引重新排列数组x的每一行

index = np.array([[2,0,1],                                                  
                  [1,2,0]])

如此

result[i,:] = x[i,index[i,:]]

result = np.array([[8,6,7],                                                  
                  [10,11,9]])

我有一个大数组x,所以我不想循环执行。

1 个答案:

答案 0 :(得分:2)

您可以广播从0到数组形状的一系列数字,并以与现在相同的方式索引列:

x[np.arange(x.shape[0])[:, None], index]

array([[ 8,  6,  7],
       [10, 11,  9]])