【发布时间】:2019-08-14 01:02:11
【问题描述】:
我有一个 numpy 数组列表,每个数组的形状都相同。比方说:
a = [np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]),
np.array([[11, 12, 13],
[14, 15, 16],
[17, 18, 19]]),
np.array([[99, 98, 97],
[96, 95, 94],
[93, 92, 91]])]
我还有另一个相同形状的数组,它给出了我想从中获取元素的列表索引:
b = np.array([[0, 0, 1],
[2, 1, 0],
[2, 1, 2]])
我想要得到的是以下内容:
np.array([[1, 2, 13],
[96, 15, 6],
[93, 18, 91]])
有一个简单的解决方案效果很好:
np.choose(b, a)
但这仅限于最多 32 个数组。但就我而言,我必须组合更多的数组(超过 100 个)。所以我需要另一种方法。
我想,它必须是关于高级索引或者np.take 方法的东西。所以可能,第一步是a = np.array(a),然后是a[np.arange(a.shape[0]), b]。但我没有得到它的工作。
有人可以帮忙吗? :)
【问题讨论】:
标签: python arrays numpy indexing take