Python 使用2D索引数组对3D数组值进行Numpy赋值
我有一个由零组成的三维numpy数组,其尺寸为CxHxW(在本例中,C=4,H=2,W=3): 我还有一个二维索引数组,维数为HxW,因此数组中的每个值都是[0,C-1]之间的有效索引Python 使用2D索引数组对3D数组值进行Numpy赋值,python,numpy,indexing,vectorization,Python,Numpy,Indexing,Vectorization,我有一个由零组成的三维numpy数组,其尺寸为CxHxW(在本例中,C=4,H=2,W=3): 我还有一个二维索引数组,维数为HxW,因此数组中的每个值都是[0,C-1]之间的有效索引 B = np.array([[2, 3, 0], [3, 1, 2]]) 是否有一种使用矢量化的快速方法来修改数组a,使所有有效i,j的a[B[i][j][i][j]=1 A = np.array([[[0, 0, 1], [0, 0, 0]],
B = np.array([[2, 3, 0],
[3, 1, 2]])
是否有一种使用矢量化的快速方法来修改数组a,使所有有效i,j的a[B[i][j][i][j]=1
A = np.array([[[0, 0, 1],
[0, 0, 0]],
[[0, 0, 0],
[0, 1, 0]]
[[1, 0, 0],
[0, 0, 1]]
[[0, 1, 0],
[1, 0, 0]]])
谢谢大家! 您似乎正在寻找: 请注意,第二个参数的维数必须与第一个参数相同,这就是为什么使用
B[None,…]
而不是B
的原因
A = np.array([[[0, 0, 1],
[0, 0, 0]],
[[0, 0, 0],
[0, 1, 0]]
[[1, 0, 0],
[0, 0, 1]]
[[0, 1, 0],
[1, 0, 0]]])
np.put_along_axis(A, B[None,...], 1, 0)