반응형
a = np.arange(10)
b = a.reshape(2,5)
c = a[0:3]
a[0] = -999
print(a)
print(b)
print(c)
print(id(a))
print(id(b))
print(id(c))
=결과=
[-999 1 2 3 4 5 6 7 8 9]
[[-999 1 2 3 4]
[ 5 6 7 8 9]]
[-999 1 2]
1859077923104
1859077926544
1859077951696
- Numpy 배열을 다루는 도중 이해가 안되는 부분이 있었다.
- a의 값을 변경하면 reshape 혹은 슬라이싱을 통해서 만들어준 Numpy의 배열의 값도 변경된다.
- 하지만 내가 의문을 가졌던 것은 이 셋의 id가 모두 다름에도 값변경이 공유된다는 점이 의아했다.
Numpy 배열 : View
- View는 일종의 원본의 참조로서, reshape 혹은 슬라이싱을 통해 생성된다.
- view() 함수를 통해서도 생성이 가능하다.
arr = np.array([1,2,3])
new = arr.view()
new[0] = 3
print(arr) # array([3, 2, 3])
print(new) # array([3, 2, 3])
- 이처럼 보여주는 형식이 다를뿐 실질적으로 메모리는 공유하기 때문에 값이 공유된다.
- 우선 현재까지로는 numpy 객체가 가지고 있는 실체값을 공유한다고 이해했다.
- 참고1 : https://studymake.tistory.com/406
- 참고2 : https://nuguziii.github.io/dev/dev-001/
(구글링을 해도 잘 나오지 않아 이정도로 이해하고 정리하지만 혹시 더 정확히 알고 계신 분이 있다면 댓글로 좀 알려주세요..)
반응형
'🛠 기타 > Data & AI' 카테고리의 다른 글
[파이썬] Numpy 배열의 연산 (0) | 2020.07.09 |
---|---|
[파이썬] Numpy 배열의 확장 및 삭제 (1) | 2020.07.09 |
[파이썬] Numpy Fancy Indexing (0) | 2020.07.09 |
[파이썬] Numpy 기초 (0) | 2020.07.08 |
딥러닝 기초 (0) | 2020.06.13 |