NumPy 배열 복사 대 보기
복사와 보기의 차이점
복사본과 배열 보기의 주요 차이점은 복사본이 새 배열이고 보기가 원래 배열의 보기라는 것입니다.
복사본 은 데이터를 소유하고 복사본 에 대한 변경 사항은 원본 어레이에 영향을 미치지 않으며 원본 어레이에 대한 변경 사항은 복사본에 영향을 미치지 않습니다.
뷰 는 데이터를 소유하지 않으며 뷰 에 대한 변경 사항은 원래 배열에 영향을 미치고 원래 배열에 대한 변경 사항은 뷰에 영향을 미칩니다.
복사:
예시
복사본을 만들고 원래 배열을 변경한 다음 두 배열을 모두 표시합니다.
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
x = arr.copy()
arr[0] = 42
print(arr)
print(x)
복사본은 원본 어레이의 변경 사항에 영향을 받지 않아야 합니다(SHOULD NOT).
보다:
예시
보기를 만들고 원래 배열을 변경한 다음 두 배열을 모두 표시합니다.
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
x = arr.view()
arr[0] = 42
print(arr)
print(x)
뷰는 원래 배열에 대한 변경 사항의 영향을 받아야 합니다(SHOULD).
보기에서 변경:
예시
보기를 만들고 보기를 변경하고 두 배열을 모두 표시합니다.
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
x = arr.view()
x[0] = 31
print(arr)
print(x)
원래 배열은 뷰에 대한 변경 사항의 영향을 받아야 합니다(SHOULD).
배열이 데이터를 소유하는지 확인
위에서 언급했듯이 사본 은 데이터를 소유 하고 뷰 는 데이터를 소유 하지 않습니다 . 하지만 이를 어떻게 확인할 수 있습니까?
모든 NumPy 배열에는 배열 이 데이터를 소유하면 base
반환 하는 속성 이 있습니다.None
그렇지 않으면 base
속성이 원래 개체를 참조합니다.
예시
배열이 데이터를 소유하는지 여부를 확인하기 위해 기본 속성의 값을 인쇄하십시오:
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
x = arr.copy()
y = arr.view()
print(x.base)
print(y.base)
복사본이 반환 None
됩니다.
보기는 원래 배열을 반환합니다.