#python #anaconda #jupyter-notebook #visual-code #html #css #javascript #http

제목numpy array shallow copy 질문2022-11-02 21:26
작성자
>>> import numpy as np
>>> a = np.array([1, 2, 3, 4])
>>> b = a.view()

를 통해서 shallow copy 를 했습니다.

>>> id(a[0])
2418675269072
>>> id(b[0])
2418675269072

를 통해 index 0 의 id 값이 동일함을 확인했고요,
이후

>>> a[0] = 5

를 통해 a의 element 를 변경할 시에 assignment 가 되면서 id 값이 변함을 확인했습니다.

>>> id(a[0])
2418675268752

하지만 shallow copy 의 경우 assignment 가 일어나면 복사본과 원본이 다른 데이터를 가리키므로 
b[0]의 값은 유지될 것으로 기대되었습니다.

하지만 
>>> id(b[0])
2418675268752

과 같이 b의 id 값 역시 변경된 것을 볼 수 있었습니다.

해당 과정을 python list 에 대해서 반복하였습니다.

>>> c = [1, 2, 3, 4]
>>> d = c[:]
>>> id(c[0])
140735580656424
>>> id(d[0])
140735580656424
>>> c[0] = 5
>>> id(c[0])
140735580656552
>>> id(d[0])
140735580656424

이 경우 기대된 바와 같이 d[0]의 id 값은 변경이 되지 않은 것을 확인할 수 있었습니다.

같은 shallow copy 임에도 이와 같은 차이가 왜 생겨나는지 궁금합니다.
댓글