2016-09-29 6 views
0

Im folgenden Code gibt es keinen Grund, ich kann sehen, warum Variable "cleary" Wert ändern würde, aber es tut. Ich habe pyCharm mehrfach neu gestartet, aber es passiert weiterhin.Python-Array ändert Werte ohne Grund

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 

Was mache ich falsch?

+0

Dies ist das erwartete Verhalten. Sehen Sie in der Dokumentation nach –

+0

Warum erwarten Sie, dass der Neustart des Editors das Kernverhalten der Python-Sprache ändert? – SethMMorton

Antwort

1

Dies ist das erwartete Verhalten. Sie übergeben die Referenz der der Name cleary zeigt auf zu temp ndarray Objekt, wenn Sie tat:

temp = cleary 

Sie vermeiden können cleary modifizieren, indem Sie eine Kopie des Arrays zu temp Zuordnung:

temp = cleary.copy() 

lesen How do I pass a variable by reference?, um mehr über die Grundlagen von Namenszuweisungen in Python zu erfahren.