索引numpy数组列由另一个numpy数组

Nam*_*man 3 numpy python-2.7

我试图在numpy中索引一个2d矩阵,这样我就可以获得所有行但只有另一个numpy数组给出的特定列.它是如下:

a = [0,1,1,2,0,2,1]

d = [[1,2,3],[1,2,3],[1,2,3],[1,2,3],[1,2,3],[1,2,3],[1,2,3]]
Run Code Online (Sandbox Code Playgroud)

我想从d获取所有行,使得列由a给出.所以对于我想要的上述例子,

t = [1,2,2,3,1,3,2]
Run Code Online (Sandbox Code Playgroud)

我尝试了numpy文档中给出的一些方法,但是我无法得到它.

我认为这在matlab中是可行的,没有任何迭代.我可以这样做是python没有循环的东西吗?

use*_*ica 5

这可以通过高级索引来完成:

>>> a = numpy.array([0, 1, 1, 2, 0, 2, 1])
>>> d = numpy.array([[1,2,3],[1,2,3],[1,2,3],[1,2,3],[1,2,3],[1,2,3],[1,2,3]])
>>> d[numpy.arange(d.shape[0]), a]
array([1, 2, 2, 3, 1, 3, 2])
Run Code Online (Sandbox Code Playgroud)

对于数组a,b以及c其中bc有整数dtype和b.shape == c.shape高级索引d = a[b, c]给出d[i] == a[b[i], c[i]].