numpy를 쓰다 보면 '...'라는 문자가 간간히 보입니다.
처음에는 코드 생략이겠거니 하고 넘어갔지만 그게 아니더라구요
grad[0] = dW
grad[0][...] = dW
이 둘의 차이는 위의 코드의 경우 얕은 복사(shallow copy)가 이뤄지고,
아리의 코드는 깊은 복사(deep copy)가 이뤄진다는 차이를 갖고있습니다.
이해를 돕기 위해 예시를 보겠습니다.
python에서 id()를 통해 현재 확인하고자 하는 변수의 메모리 주소를 확인할 수 있습니다.
만약 a[...] = b를 통해 b의 값을 a에 대입할 경우, 깊은 복사가 이루어지기 때문에 a와 b의 메모리 주소는 다르지만 값이 같은 것을 볼 수 있습니다.
하지만 a = b를 통해 대입을 할 경우, 얕은 복사가 이뤄져 같은 메모리 주소를 가리키는 모습을 볼 수 있습니다.
이렇게 될 경우 a의 값을 바꿀 경우 b의 값도 바뀌게 됩니다.
'Python' 카테고리의 다른 글
Chapter 09. 튜플과 레인지 (0) | 2021.01.09 |
---|---|
Chapter 08. for 루프와 while 루프 (0) | 2021.01.09 |
Chapter 07. True, False 그리고 if와 그 형제들 (0) | 2021.01.09 |
Chapter 06. 리스트와 문자열의 함수들 (0) | 2021.01.08 |
Chapter 05. 리스트와 문자열 (0) | 2021.01.07 |