当我使用 Python 对 3 维矩阵进行建模时,我首先制作了一个由零组成的多数组。然后,我可以通过引用它的索引轻松地覆盖每个元素。问题是,当尝试使用 [:] 引用多个元素时,索引的顺序会发生变化。我要用矩阵数学术语说话,所以请耐心等待。
在下面的示例中,我想为每个时间级别的二维平面中对象的位置建模。所以对于每个时间级别,我都有一个 X(行)和 Y(列)坐标。在下面的示例中,我使用了 3 行 4 列的两个时间级别。
>>> Simple = numpy.zeros([2,3,4],float)
>>> print Simple
[[[ 0. 0. 0. 0.]
[ 0. 0. 0. 0.]
[ 0. 0. 0. 0.]]
[[ 0. 0. 0. 0.]
[ 0. 0. 0. 0.]
[ 0. 0. 0. 0.]]]
看起来不错。我有两个 3x4 矩阵。现在我想将第 2 矩阵(第 2 时间级别)第 3 行第 4 列的值更改为等于 9。
>>> Simple[1][2][3] = 9
>>> print Simple
[[[ 0. 0. 0. 0.]
[ 0. 0. 0. 0.]
[ 0. 0. 0. 0.]]
[[ 0. 0. 0. 0.]
[ 0. 0. 0. 0.]
[ 0. 0. 0. 9.]]]
到目前为止,一切都很好。由此,我可以看出索引的顺序是 Simple[TimeLevel,X,Y]。所以现在,对于每个时间级别,我希望第一行第二列(timelevel = both,x=0,y=1)中的元素是数字“4”。
>>> Simple[:][0][1] = 4
>>> print Simple
[[[ 0. 0. 0. 0.]
[ 4. 4. 4. 4.]
[ 0. 0. 0. 0.]]
[[ 0. 0. 0. 0.]
[ 0. 0. 0. 0.]
[ 0. 0. 0. 9.]]]
如您所见,索引的顺序不再相同。它从 Simple[TimeLevel,row,column] 切换到 Simple[column,TimeLevel,row]。
我的问题是:为什么?