考虑以下Python代码:为什么添加和分配(+ =)与numpy.ndarrays奇怪行为?
import numpy
a = numpy.random.rand(3,4)
b = numpy.random.rand(3,4)
c = a
c += b
c/2. - (a + b)/2.
最后一行的结果是不用零的阵列。但是,如果我这样做:
d = a
d = d + b
d/2. - (a + b)/2.
然后结果为0,如预期。这对我来说看起来很奇怪,有谁能解释这种行为吗?对于numpy数组,使用+=, /=, ...
是否明智?谢谢!
(这仅是一个小例子,我必须添加几个阵列。)
谢谢您的回答,我已经接受了它,因为它是第一个和最解释性之一。我完全没有考虑过,我只生成了另一个对同一个对象的引用,而不是副本... – Marius 2014-10-29 12:34:47
谢谢,如果我的(因果性?)推论是正确的:欢迎来到数字python世界:) – eickenberg 2014-10-29 12:54:16