2016-09-29 5 views
0

다음 코드에서는 "cleary"변수가 값을 변경하는 이유를 알 수있는 이유가 없습니다. pyCharm을 여러 번 다시 시작했지만 계속 발생합니다.이유없이 파이썬 배열이 값을 변경합니다.

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

왜 에디터를 다시 시작하면 파이썬 언어의 핵심 동작이 바뀔 것이라고 기대합니까? – SethMMorton

답변

1

이것은 예상되는 동작입니다.

temp = cleary 

당신은 temp에 배열의 카피를 할당하여 cleary을 수정 피할 수 있습니다 :

temp = cleary.copy() 

읽기 당신은 당신이 한 때 이름 clearytemp를 가리키는 객체 ndarray의 기준을 통과 How do I pass a variable by reference?에서 파이썬의 이름 할당의 토대에 대해 더 자세히 배울 수 있습니다.

관련 문제