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

时间:2015-11-09 01:18:59

标签: python-2.7 numpy

我试图在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]]

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

t = [1,2,2,3,1,3,2]

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

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

1 个答案:

答案 0 :(得分:5)

可以使用advanced indexing

完成此操作
>>> 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])

对于数组abc,其中bc具有整数dtype和b.shape == c.shape,高级索引{{1给出d = a[b, c]