我对在 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?谢谢!