2013-07-22 37 views
2

我正在編寫一個Python腳本,作爲氣候變化和森林火災研究的一部分。這可能是一個新手問題,但我是一名初學者程序員。 我有大的numpy數組(1)的氣象變量(例如:溫度,相對溼度等)。在程序的一部分中,我定義了另一個數組('t0')等於'temp'。 (2)通過輸入變量保存Python腳本

(1) `temp = N.array([[[-7.060185]],[[-17.5462963]],[[-22.43055556]],[[-16.13425926]]])` 
(2) `t0 = temp`  
(3) `t0[t0 < (-1.1)] = -1.1` 

這工作---「T0」等於「溫度」陣列,但是第三行之後(3)「溫度」已保存在具有的新值「T0」。有什麼辦法可以讓'temp'不被改變?我試過保存其他副本等,但似乎沒有任何工作。

謝謝!

+0

按't0 = temp',你將一個新的名字't0'綁定到同一個對象(在這個例子中是一個numpy數組) – mg007

回答

0
t0 = temp 

實際上沒有執行副本。它使名稱t0temp都指向相同的數組。你可能想

t0 = temp.copy() 

這使得一個新的,獨立的陣列。

0

您想使用深拷貝see the documentation here。深度複製將創建一個新的數組t0,該數組具有唯一的存儲位置,其中的值將從temp複製。發生在你身上的是你所說的t0與temp是同一個對象,那麼當你改變t0時,temp就會改變,因爲你聲明它們是同一個對象。