Hello Python/iPython用户。a = b似乎是相同的,而不是副本。为什么?
我发现了Python使用numpy数组的奇怪行为。我自己找到了解决问题的办法,但我很想得到解释。提前致谢。
这里的问题: 使用IPython中创建一个numpy的阵列和一个副本,称为B:
import numpy as np
a=np.zeros(5)
b=a
然而,B似乎是相当的身份,而不是一个副本,因为改变b也会改变。
b[0]=1
a
array([ 1., 0., 0., 0., 0.])
的解决方案是使用b=a.copy()
而非b=a
,但我想明白为什么这是蟒蛇的情况。我对Matlab,R和Fortran非常熟悉,从未遇到过这样的问题。为什么有人想为同一个数据取一个名字而不是这个向量的副本?只是一些python特定的语法的东西,还是有更多的理解?
如果你想真正了解这里发生了什么,读(http://nedbatchelder.com/text/names.html)由斯内德尔德[关于Python的名称和值事实与神话。 –