为 3D python 数组中的特定下标索引赋值会引发错误

Assigning values to specific subscript indices in 3D python array throws errors

假设我已经将 3D 数组初始化为:

arr_3d = np.zeros((100, 100, 100))

现在我想将 arr_3d 的下标索引 (i, j, k) 处的元素更改为某个值(比如 1),其中 i, j, k 是索引的列表(或数组)大小 100, 100, 40,分别沿三个轴。我试过 arr_3d[i, j, k] = 1,但它会引发错误。我已经尝试通过 np.ravel_multi_index() 将下标索引转换为线性索引,但它看起来无法转换 3D 数组的下标索引。

上述问题在 Matlab 中很容易解决,其中使用 arr_3d(i, j, k) = 1 有效。

尝试不同的尺寸,不同的尺寸

In [1375]: a=np.zeros((2, 3, 4))
In [1376]: a[np.ix_([0], [1,2], [0,1])] = 1
In [1377]: a
Out[1377]: 
array([[[ 0.,  0.,  0.,  0.],
        [ 1.,  1.,  0.,  0.],
        [ 1.,  1.,  0.,  0.]],

       [[ 0.,  0.,  0.,  0.],
        [ 0.,  0.,  0.,  0.],
        [ 0.,  0.,  0.,  0.]]])

numpy 在第一维将数组分成 'planes'; MATLAB 在最后完成。所以这显示了 2 个平面或块,每个 3x4。

八度

>> a = zeros(2,3,4);
>> a([1],[2,3],[1,2]) = 1
a =

ans(:,:,1) =

   0   1   1
   0   0   0

ans(:,:,2) =

   0   1   1
   0   0   0

ans(:,:,3) =

   0   0   0
   0   0   0

ans(:,:,4) =

   0   0   0
   0   0   0

4 块 2x3。