numpy:如何用1d数组索引2d数组?

时间:2019-03-06 23:41:10

标签: python arrays numpy indexing

我有一个二维数组:

a = np.random.randint(100, size=(6, 4))
[[72 76 40 11]
 [48 82  6 87]
 [53 24 25 99]
 [ 7 94 82 90]
 [28 81 10  9]
 [94 99 67 58]]

和一维数组:

idx = np.random.randint(4, size=6)
[0, 3, 2, 1, 0, 2]

是否可以索引2d数组,以便结果为:

a[idx]
[72, 87, 25, 94, 28, 67]

2 个答案:

答案 0 :(得分:2)

由于具有列索引,因此您只需要行索引。您可以使用arange生成它们。

>>> a[np.arange(len(a)), idx]
 array([72, 87, 25, 94, 28, 67])

答案 1 :(得分:0)

如果没有arange,有什么办法可以解决这个问题?对我来说,类似

a[idx.reshape(-1,1)]

a[:,idx]

不会产生此结果。