【发布时间】:2019-05-08 04:42:26
【问题描述】:
indexes = np.array([[0,1,3],[1,2,4 ]])
data = np.random.rand(2,5)
现在,我想要一个形状为 (2,3) 的数组,其中
result[0] = data[0,indexes[0]]
result[1] = data[1,indexes[1]]
实现这一目标的正确方法是什么?一种可以推广到更大数组(可能更高维)的 numpy 方法。
请注意与this 等问题的区别,其中索引数组包含元组。这不是我要问的。
编辑
这个问题的更一般的表述是:
- data.shape == (s0, s1, .., sn)
- indexes.shape == (s0, s1, ..., sn-1, K)
- 所以,除了最后一个相等之外,它们都有所有维度
比
result[i, j, ..., k] = data[i, j,...,k, indexes[i, j, ..., k]]
在哪里
len([i, j, ..., k]) == len(data)-1 == len(indexes) - 1
【问题讨论】:
标签: python numpy tensorflow indexing