Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用2D索引数组对3D数组值进行Numpy赋值_Python_Numpy_Indexing_Vectorization - Fatal编程技术网

Python 使用2D索引数组对3D数组值进行Numpy赋值

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]],

我有一个由零组成的三维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]],
              [[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)