我试图在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中是可行的,没有任何迭代。我可以这样做是没有循环的东西吗?
答案 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])
对于数组a
,b
和c
,其中b
和c
具有整数dtype和b.shape == c.shape
,高级索引{{1给出d = a[b, c]
。