使用另一个numpy数组索引numpy数组

xst*_*ter 20 python numpy multidimensional-array

假设我有

a = array([[1, 2],
           [3, 4]])
Run Code Online (Sandbox Code Playgroud)

b = array([1,1])
Run Code Online (Sandbox Code Playgroud)

我想在索引a中使用b,即做[b]并得到4而不是[[3,4],[3,4]]

我可以做到

a[tuple(b)]
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法呢?

谢谢

Mat*_*ndl 6

假设您要访问的子向量a具有n个索引对,其存储方式b如下:

b = array([[0, 0],
       ...
       [1, 1]])
Run Code Online (Sandbox Code Playgroud)

可以按照以下步骤进行:

a[b[:,0], b[:,1]]
Run Code Online (Sandbox Code Playgroud)

对于单对索引向量,它变为a[b[0],b[1]],但是我猜想该tuple方法更易于阅读,因此更可取。

  • 但是我想知道哪个更快?tuple()不会创建副本,而上面的视图不会吗? (3认同)