[英]Why is add and assign (+=) behaving strangely with numpy.ndarrays?
考慮以下 Python 代碼:
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 arrays 使用+=, /=, ...
是否明智? 謝謝!
(這只是一個最小的例子,我必須加起來幾個 arrays。)
因為行c = a
僅使 c 指向 a。 它不復制一個。 然后c += b
也加到 a。
要將多個 arrays 相加,您必須直接進行,或者使用總和 function。
c = a + b
c = sum([a, b])
c = numpy.sum([a, b], axis=0)
或者先復制數組:
c = a.copy()
c += b
這是因為當你這樣做時:
c = a
從那時起, a
和c
是相同的object。所以之后,
c += b
你還有c == a
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.