목차
- 배열 (Copy / View) 차이점
- 배열 Copy
- 배열 view
- 배열의 데이터 개별소유 여부 확인
배열 (Copy / View) 차이점
copy()
원본과 복사본이 별개.
즉, 서로 영향 안 미침.
즉, 복사본 배열이 데이터 개별 소유 O.
view()
원본과 복사본 상호 영향.
즉, 서로 영향 미침.
즉, 복사본 배열이 데이터 개별 소유 X.
배열 Copy
※ 원본 변경 시, 복사본에 영향 안 미침.
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
x = arr.copy()
arr[0] = 34
print(arr) # [34 2 3 4 5]
print(x) # [1 2 3 4 5]
※ 복사본 변경 시, 원본에 영향 안 미침.
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
x = arr.copy()
x[0] = 34
print(arr) # [1 2 3 4 5]
print(x) # [34 2 3 4 5]
배열 view
※ 원본 변화가 복사본에 영향 미침.
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
x = arr.view()
arr[0] = 34
print(arr) # [34 2 3 4 5]
print(x) # [34 2 3 4 5]
※ 복사본 변화가 원본에 영향 미침.
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
x = arr.view()
x[0] = 34
print(arr) # [34 2 3 4 5]
print(x) # [34 2 3 4 5]
배열의 데이터 개별소유 여부 확인
NumPy 배열 객체의 base 속성 이용.
※ copy()로 생성된 배열 (= 데이터 개별 소유 O) 경우, None 반환.
※ view()로 생성된 배열 (= 데이터 개별 소유 X) 경우, 원본 배열 반환.
[예제]
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
x = arr.copy()
y = arr.view()
print(x.base) # None
print(y.base) # [1 2 3 4 5]