【发布时间】:2021-08-06 21:17:28
【问题描述】:
我有一个带有 D 元素的一维整数数组(即idx = np.array([i0, i1, ...]), s.t. idx.size = D),其中每个元素对应于具有 D 维的 ND 数组的该维的索引(即data s.t. data.ndim = D)。如何使用索引数组idx 索引data 数组?
在 python 中我会使用 data[tuple(idx)],但在 numba nopython 模式下不支持 tuple。
我当前的解决方法是使用 data.ravel() 并将 ND 索引转换为扁平数组的一维索引,但似乎必须有一个更简单(并且计算速度更快)的解决方案。某处有take_along_each_axis(data, idx) 方法吗?
【问题讨论】:
-
为什么需要使用
njit?这是一个基本的 numpy 操作,在编译后的代码中实现。它没有在 python 中迭代。 -
date.__getitem__(idx) -
@hpaulj 我的最终目标是比索引数组稍微复杂一些的计算。
__getitem__()使用数组(而不是元组)与使用它进行索引相同,它顺序获取每个元素而不是使用每个元素来索引每个维度,即data.__getitem__([0, 0, ... 0])返回data本身,而不是第 0 个条目。