基于第二个数组中的索引重新洗牌numpy数组

时间:2015-08-10 13:11:57

标签: python numpy

我有2个numpy数组:

A = np.array([6, 7 ,8 ,9, 0])
B = np.array([5, 3, 2, 4, 1])

并希望使用第二个阵列重新洗牌。所以A的第一个元素应该在输出数组中放置5。第二个元素应该转到第三个等等。因此输出数组变为:

C = np.array([0, 8, 7, 9, 6])

使用简单的python循环很简单,但我只想使用numpy。速度非常重要。

1 个答案:

答案 0 :(得分:3)

Numpy允许您使用B索引A。你必须从B中减去1,因为numpy数组中的索引从0开始:

In [17]: A = np.array([6, 7, 8, 9, 0])

In [18]: B = np.array([5, 3, 2, 4, 1])

In [19]: C = A[B-1]

In [20]: C
Out[20]: array([0, 8, 7, 9, 6])