考慮以下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