NumPy View와 Copy
10 Jul 2025 | DA개인공부 후 자료를 남기기 위한 목적임으로 내용 상에 오류가 있을 수 있습니다.
View 와 Copy
- View: 원본 배열의 메모리를 공유하는 새로운 배열로 뷰를 수정하면 원본도 함께 변경된다.
- Copy: 원본 배열과 완전히 독립된 새로운 배열로 복사본을 수정해도 원본은 변경되지 않는다.
# view 경우 > 일반적으로 copy를 해주지 않으면 모든 기본 복사는 다 view 복사다.
origin = np.arange(5) # [0,1,2,3,4]
view_arr = origin # [0,1,2,3,4]
view_arr[0] = 99 # [99,1,2,3,4]
origin # [99,1,2,3,4]
# copy 경우
origin = np.arange(5) # [0,1,2,3,4]
view_arr = origin.copy() # [0,1,2,3,4]
view_arr[0] = 99 # [99,1,2,3,4]
origin # [0,1,2,3,4]
np.array vs np.asarray ?
그럼 우리가 Numpy를 통해 배열을 만들때 사용한 np.array
는 어떤 개념일까?
- np.arraay(): 항상 새로운 배열을 복사하여 만든다
- np.asarray(): 이미 numpy 배열이라면 복사하지 않고 그대로 사용해 메모리 효율을 높인다.
즉, 둘은 동일한 기능을 하는 함수임은 맞지만
np.array는 copy=True
가 기본값이고, asarray는 copy=False
가 기본값인 것이다.
a = np.ones([2,3])
a_array = np.array(a)
a_asarray = np.asarray(a)
a[0] = 0
a_array
# array([[1., 1., 1.],
# [1., 1., 1.]])
a_asarray
# array([[0., 0., 0.],
# [1., 1., 1.]])