使用另一个numpy数组索引numpy数组
假设我有
a = array([[1, 2],
[3, 4]])
还有
b = array([1,1])
我想在索引a中使用b,也就是说,我想做a[b],希望得到4,而不是[[3, 4], [3, 4]]
我可能可以这样做
a[tuple(b)]
有没有更好的方法呢?
谢谢
3 个回答
2
上面的说法是对的。不过,如果你看到这样的错误:
IndexError: only integers, slices (`:`), ellipsis (`...`), numpy.newaxis (`None`) and integer or boolean arrays are valid indices
那么可能是你的索引数组是浮点类型的。你可以把它改成下面这样:
arr[tuple(a.astype(int))]
22
假设你想要访问一个叫做 a
的向量中的一部分,这部分的索引对存储在另一个叫 b
的地方,像这样:
b = array([[0, 0],
...
[1, 1]])
你可以这样做:
a[b[:,0], b[:,1]]
如果你只有一对索引,那么可以用 a[b[0],b[1]]
来表示,但我觉得用 tuple
的方式更容易理解,所以更推荐这种写法。
52
根据NumPy教程,正确的做法是:
a[tuple(b)]