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的名稱和值事實與神話。 –