使用
aas作为数据数组和
idx索引数组,以便每一行对应于要在数据数组中设置的一个元素,您可以执行以下操作-
a[tuple(idx.T)] = 5
样品运行-
In [94]: a = np.zeros((2,2,3),dtype=int)In [95]: idx = np.array([[0,0,0],[1,1,0],[0,1,2]])In [96]: a[tuple(idx.T)] = 5In [97]: aOut[97]: array([[[5, 0, 0], [0, 0, 5]], [[0, 0, 0], [5, 0, 0]]])In [98]: a[tuple(idx.T)] = [5,10,15] # or set different valuesIn [99]: aOut[99]: array([[[ 5, 0, 0], [ 0, 0, 15]], [[ 0, 0, 0], [10, 0, 0]]])
或者,我们可以使用计算线性索引,
np.ravel_multi_index然后使用进行赋值
np.put,就像这样-
np.put(a,np.ravel_multi_index(idx.T,a.shape),5)
如果您要处理三维数组,我们可以对三维索引进行切片,然后分配具有另一种方法,如下所示:
a[idx[:,0],idx[:,1],idx[:,2]] = 5
如果只是需要设置的一个元素,请执行以下操作-
a[tuple(idx)] = 5
样品运行-
In [118]: a = np.zeros((2,2,3),dtype=int)In [119]: idx = np.array([0,0,0])In [120]: a[tuple(idx)] = 5In [121]: aOut[121]: array([[[5, 0, 0], [0, 0, 0]], [[0, 0, 0], [0, 0, 0]]])



