2016-06-17 5 views
0

슬라이스를 사용하여 배열 할당을 사용할 때 이상한 일이 발생했습니다. 소스 코드는 아래와 같다 :하는 배열 할당 후에 다른 인 ID B 결과에서슬라이스를 사용한 배열 할당

enter image description here

:

import numpy as np 
a = np.array([1,2,3,4]).reshape(2,2) 
b = np.array([5,6,7,8]).reshape(2,2) 
print(id(a)) 
print(id(b)) 
b = a[:] 
b[1,1] = 10 
print(b is a) 
print(id(a)) 
print(id(b)) 
print(a) 
print(b) 

결과는 다음과 같이 주어진다 그러나 값을으로 변경하면 의 값이으로 변경됩니다. 왜 이런거야?

숭고한 텍스트 사용, Python 3.4.3.

+0

해당 링크는 약 목록입니다. 이 질문은'numpy' 배열에 관한 것입니다. – hpaulj

+2

'a [:]'는'view'를 복사본이 아닙니다. – hpaulj

+0

@hpaulj 감사합니다. 당신 말이 맞아요. 너 프디 배열은 목록과 다릅니다. –

답변

0

, b=a[:]a의 복사본을 만듭니다 : 여기에 도움이 될 수도 이전의 대답이다. b의 변경 사항은 a 또는 그 값에 영향을주지 않습니다.

그러나 numpy 배열을 사용하면이 작업으로 view이됩니다. b은 새로운 개체이지만 기본 데이터 버퍼를 공유합니다. b의 값을 변경하면 a에 영향을줍니다.

사용 b=b.copy() 실제 사본을 원하십니까?

https://docs.scipy.org/doc/numpy-dev/user/quickstart.html#copies-and-views

+0

이 파일은 내가 말한 것과 정확히 일치합니다. [docs.scipy.org/doc/numpy-dev/user/quickstart] (https://docs.scipy.org/doc/numpy-dev/user/quickstart) .html) –