2016-09-29 76 views
0

在下面的代碼中,我沒有理由明白爲什麼變量「cleary」會改變值,但它確實會改變值。我重新啓動了pyCharm多次,但它一直在發生。Python數組無故更改值

import numpy as np 

nPeriods = 48 
nGens = 1 
cleary = np.zeros((nPeriods,nGens,2)) 
clearz = np.zeros((nPeriods,nGens)) 

for ii in range(nPeriods): 
    for jj in range(nGens): 
     temp = cleary 
     temp[ii,jj,:] = 1 

我在做什麼錯?

+0

這是預期的行爲。查閱文檔 –

+0

您爲什麼期望重新啓動編輯器會改變Python語言的核心行爲? – SethMMorton

回答

1

這是預期的行爲。您傳遞的參考ndarray對象名稱cleary被指向到temp你這麼做的時候:

temp = cleary 

您可以避免通過指定數組的一個副本修改clearytemp

temp = cleary.copy() 

閱讀How do I pass a variable by reference?瞭解更多關於Python中名稱分配的基礎知識。