numpy 数组的第二个附加列表也更改了列表中的第一个条目

丽莎

在以下代码中:

E=np.zeros((2,2))
H=np.zeros((2,2))+1
L=[]
L.append(E)
E=H
L.append(E)
print(L)

输出是我期望的:

[array([[0., 0.],
    [0., 0.]]), array([[1., 1.],
    [1., 1.]])]

即 L[0] 在第二次附加后保持不变。但是,对于代码:

E=np.zeros((2,2))
H=np.zeros((2,2))+1
L=[]
L.append(E)
E[0,0]=H[0,0]
L.append(E)
print(L)

输出是

[array([[1., 0.],
        [0., 0.]]), array([[1., 0.],
        [0., 0.]])]

即 L[0] 在第二次附加之后发生了变化。有人可以解释为什么有区别吗?我知道附加 E.copy() 更安全,但我不明白差异的来源是什么,因为 E[0,0] 是 numpy 而不是列表。

托马斯·希尔格

在您的第一个示例中,变量被分配给与引用(第二个数组)E相同的数组。H与第一个数组的原始关系E被简单地覆盖。这就是第一个示例中第一个列表元素不受影响的原因。在您的第二个示例中,您更改了E该列表的第一个条目所引用的数组的内容,以及该数组的第一个条目也已分配给该数组的内容。因此它会改变。

在 python 中的操作=是相当明确的。只需为变量分配一些引用。无论之前提到的变量是什么,都无关紧要。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用矢量化在 nan 之后获取 numpy 数组行中的第一个/第二个/第三个...值

取第一个和中间条目,第二个和中间+1个条目的点积,直到中间-1个和最后一个条目python / numpy

如何提取此numpy数组中的第二个元素,其中每行的第二个元素是另一个numpy数组

如果第二个元素等于 Numpy 中的所需数字,如何增加行中的第一个元素?

更改元组列表,使第一个条目与第二个条目相同

当第二个列表包含numpy数组时,根据python中的其他列表排序列表不起作用

numpy数组从第二个数组插入第二个元素

从第二个列表中减去第一个列表中的元素

根据Rails中的第一个选择列表值更改第二个选择列表

使用 numpy,如何生成一个数组,其中每个索引的值是第二个数组中从 0 到同一索引的值的总和?

与倒数第二个索引相比,最后一个索引对numpy数组的访问时间影响更大

如何有效地过滤一个numpy数组,使其包含第二个数组中包含的行

查找第一个值并返回列表中的第二个值

打印列表中的第一个,第二个出现的字符

使用NumPy查找元组列表的第二个元素的中位数

使用第二个数组中的顺序就地排序numpy数组

如果我不更改第一个下拉列表,则第二个下拉列表的值不变

numpy索引:二维数组中每行的第一个(可变)元素数

pytest,参数化第一个列表中的 x 和第二个列表中的 y

创建列表的多维numpy数组,并为第一个元素依次分配一个数字

将numpy数组的每一行与第二个numpy数组的所有行相加(python)

Bash脚本查找第二个列表中第一个出现的列表元素

根据第一个下拉列表中的选择显示第二个下拉列表?

Python:根据第一个列表索引确定第二个列表中的值

将第一个列表中的每个值与第二个列表配对

如何使用Python中的某些格式结合第二个列表和第一个列表?

如何从添加到第一个列表的第二个列表中检索数据

序言。从第一个列表中删除在第二个列表中出现偶数的项目

Prolog - 检查第二个列表是否包含第一个列表中的所有偶数