gpt4 book ai didi

python - 在 numpy 中,q1 = p[ :] instead of q1 = p, 但是当我修改 q1 时 p 被修改了?

转载 作者:行者123 更新时间:2023-12-03 16:55:42 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





How can I tell if NumPy creates a view or a copy?

(2 个回答)



Confusion about when NumPy array slices are references and when they are copies

(2 个回答)


去年关闭。




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

import numpy as np
p = np.array([1.0, 0.0, 1.0, 0.3])

然后我尝试使用以下三种方法制作 p 的“副本”:
q = p
q1 = p[:]
q2 = p.copy()

现在我执行 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?谢谢!

最佳答案

documentation Numpy 状态:

All arrays generated by basic slicing are always views of the original array.



因此 q1在你的情况下是 viewp并反射(reflect)对 p 所做的更改.

关于python - 在 numpy 中,q1 = p[ :] instead of q1 = p, 但是当我修改 q1 时 p 被修改了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60868296/

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