小编Xia*_*iao的帖子

在 numpy 中,q1 = p[:] 而不是 q1 = p,但是当我修改 q1 时 p 被修改了?

我对在 Python 中复制 Numpy 数组的工作方式感到困惑。我从以下几点开始:

import numpy as np
p = np.array([1.0, 0.0, 1.0, 0.3])
Run Code Online (Sandbox Code Playgroud)

然后我尝试使用以下三种方法制作 p 的“副本”:

q = p
q1 = p[:]
q2 = p.copy()
Run Code Online (Sandbox Code Playgroud)

现在我执行q1[2] = 0.2,然后检查 q、q1 和 q2 的值。我惊讶地发现 p、q 和 q1 都变成了array([1.0, 0.0, 0.2, 0.3]),而只有 q2 保持不变。我也曾经id()检查过所有四个变量(p、q、q1、q2)的地址,并且已经确认id(p) = id(q),但是id(q1) != id(p).

我的问题是,如果id(q1) != id(p),q1 的修改如何改变 p 和 q?谢谢!

python numpy

8
推荐指数
2
解决办法
236
查看次数

标签 统计

numpy ×1

python ×1