2

所以挑战是这样的;给定一个带有 n 行的尴尬数组和一个包含 n 个索引(i_1 到 i_n)的列表,返回一个包含所有行的 row_m 元素 i_m 的列表。

这可以这样做;

import awkward
some_awkward_array = awkward.fromiter([[1,2],[3,4,5],[6]]) 
some_indices = [0,2,0]
desired_elements = [row[i] for row, i in zip(some_awkward_array, some_indices)]
assert desired_elements == [1,5,6]

但是,如果这是一个 numpy 数组,我们将可以访问choose,所以我们可以这样做;

import numpy as np
some_numpy_array = np.array([[1,2,0],[3,4,5],[6,0,0]]) 
some_indices = [0,2,0]
desired_elements = np.choose(some_indices, some_numpy_array.T)
assert desired_elements == [1,5,6]

第二个版本似乎扩展得更好,它在 12 行左右变得更快。笨拙的数组是否有等效的选择?

编辑; 也许这是一IndexedMaskedArray件事,但我无法让它做我想做的事。

4

0 回答 0