【发布时间】:2014-01-27 23:09:49
【问题描述】:
您好 Python/iPython 用户。
我发现使用 numpy 数组的 python 有一个奇怪的行为。我自己找到了解决问题的方法,但我很想得到解释。提前致谢。
问题来了: 使用 ipython 我创建了一个 numpy 数组 a 和 a 的副本,称为 b:
import numpy as np
a=np.zeros(5)
b=a
但是,b 似乎是 a 的标识,而不是副本,因为更改 b 也会更改 a。
b[0]=1
a
array([ 1., 0., 0., 0., 0.])
解决方案是使用b=a.copy() 而不是b=a,但我想了解为什么在python 中会出现这种情况。我对 Matlab、R 和 Fortran 非常熟悉,以前从未遇到过这样的问题。为什么有人想要为相同的数据使用第二个名称而不是该向量的副本?只是一些特定于 python 的语法,还是有更多需要理解的?
【问题讨论】:
-
如果您想真正了解这里发生了什么,请阅读 Ned Batchelder 的 Facts and myths about Python names and values。