我有一个二维数组:
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]
答案 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]
不会产生此结果。