<分区>
我有一个 3D numpy 数组 data
和另一个数组 pos
索引(索引本身就是一个 numpy 数组,这使得后一个数组成为一个二维数组) :
import numpy as np
data = np.arange(8).reshape(2, 2, -1)
#array([[[0, 1],
# [2, 3]],
#
# [[4, 5],
# [6, 7]]])
pos = np.array([[1, 1, 0], [0, 1, 0], [1, 0, 0]])
#array([[1, 1, 0],
# [0, 1, 0],
# [1, 0, 0]])
我想使用 pos
中的索引选择和/或改变 data
中的元素。我可以使用 for
循环或列表理解来进行选择:
[data[tuple(i)] for i in pos]
#[6, 2, 4]
data[[i for i in pos.T]]
#array([6, 2, 4])
但这似乎不是一个numpy的方式。这个问题有向量化的 numpy 解决方案吗?