如何构建索引集以引用数组

时间:2017-08-24 03:10:32

标签: python numpy vectorization broadcasting

如果我有:

x = np.asarray([[1,2],[3,4],[5,6]])

我想创建:

y = np.asarray([1,4,5])

为了做到这一点,我按如下方式构建了一个数组:

inds = np.asarray([[0,0],[1,1],[2,0]])

我将其传递给x,如下所示:

y = x[inds]

这不会产生inds中的行索引的元素。我如何以这种方式或与此类似的方式实现此功能?

1 个答案:

答案 0 :(得分:1)

这是advanced indexing的用途;将行索引和列索引提取到两个单独的数组中,并使用它们对数组进行子集化:

x[inds[:,0], inds[:,1]]
# array([1, 4, 5])