根据另一个数组和索引数组创建一个numpy数组

时间:2015-12-10 02:57:17

标签: python arrays numpy

我有一个numpy数组(例如,a = np.array([ 8., 2.])),另一个数组存储了我想从前一个数组得到的索引。 (例如,b = np.array([ 0., 1., 1., 0., 0.])

我想要做的是从这两个数组创建另一个数组,在这种情况下,它应该是:array([ 8., 2., 2., 8., 8.])

当然,我总是可以使用for循环来实现这个目标:

for i in range(5):
    c[i] = a[b[i]]

我想知道是否有更优雅的方法来创建这个数组。像c = a[b[0:5]]这样的东西(好吧,这显然不起作用)

1 个答案:

答案 0 :(得分:2)

只有整数数组可用于索引,并且您已将b创建为float64数组。如果明确转换为整数,则可以获得所需内容:

bi = np.array(b, dtype=int)
c = a[bi[0:5]]