【发布时间】:2016-12-13 15:41:05
【问题描述】:
假设我有一个 N 维 np.array(或只是一个列表)和一个包含 N 个索引的列表。在不使用循环的情况下索引数组的首选/有效方法是什么?
# 4D array with shape of (2, 3, 4, 5)
arr = np.random.random((2, 3, 4, 5))
index = [0, 2, 1, 3]
result = ??? # Equivalent to arr[0, 2, 1, 3]
此外,仅提供 3D 索引,结果应该是最后一维的数组。
index = [0, 2, 1]
result2 = ??? # Equivalent to arr[0, 2, 1]
请注意,我不能只使用通常的语法进行索引,因为实现必须处理不同形状的数组。
我知道 NumPy 支持按数组索引,但它的行为不同,因为它从数组中挑选值而不是按维度索引 (https://docs.scipy.org/doc/numpy/user/basics.indexing.html)。
【问题讨论】: