gpt4 book ai didi

Python 数组索引开关 - 发生了什么?

转载 作者:行者123 更新时间:2023-11-28 17:50:51 25 4
gpt4 key购买 nike

当我使用 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]。

我的问题是:为什么?

最佳答案

[:] 所做的只是返回序列的副本。这不是您想要的。

>>> Simple[:,0,1] = 4
>>> Simple
array([[[ 0., 4., 0., 0.],
[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.]],

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

关于Python 数组索引开关 - 发生了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10167428/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com