NumPy 배열 복사본 대 비뷰
- 이전 페이지 NumPy 데이터 타입
- 다음 페이지 NumPy 배열 형태
복사본과 뷰 간의 차이
복사본과 배열 뷰 간의 주요 차이는 복사본이 새로운 배열인 반면에 뷰는 원본 배열의 뷰라는 것입니다.
복사본은 데이터를 가지고 있으며, 복사본에 대한 어떤 변경도 원본 배열에 영향을 미치지 않으며, 원본 배열에 대한 어떤 변경도 복사본에 영향을 미치지 않습니다.
뷰는 데이터를 가지지 않으며, 뷰에 대한 모든 변경은 원본 배열에 영향을 미칩니다. 원본 배열에 대한 모든 변경은 뷰에 영향을 미칩니다.
복사본:
예제
복사본을 생성하고, 원본 배열을 변경한 후 두 개의 배열을 표시합니다:
import numpy as np arr = np.array([1, 2, 3, 4, 5]) x = arr.copy() arr[0] = 61 print(arr) print(x)
이 복사본은 원본 배열에 대한 변경에 영향을 받지 않아야 합니다.
뷰:
예제
뷰를 생성하고, 원본 배열을 변경한 후 두 개의 배열을 표시합니다:
import numpy as np arr = np.array([1, 2, 3, 4, 5]) x = arr.view() arr[0] = 61 print(arr) print(x)
뷰는 원본 배열에 대한 변경에 영향을 받아야 합니다.
뷰에서 변경:
예제
뷰를 생성하고, 뷰를 변경하고, 두 개의 배열을 표시합니다:
import numpy as np arr = np.array([1, 2, 3, 4, 5]) x = arr.view() x[0] = 31 print(arr) print(x)
원본 배열은 뷰에 대한 변경에 영향을 받아야 합니다.
배열이 데이터를 가지고 있는지 확인
위와 같이 복사본은 데이터를 가지고 있으며, 뷰는 데이터를 가지지 않지만, 우리는 어떻게 확인할 수 있습니까?
NumPy 배열은 모두 속성을 가집니다 base
، 그렇다면 이 배열이 데이터를 가지고 있다면 이 base 속성은 다음을 반환합니다: None
。
그렇지 않으면base
속성은 원본 객체를 참조합니다.
예제
배열이 자신의 데이터를 가지고 있는지 확인하기 위해 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
。
리스트를 원래 배열로 반환
- 이전 페이지 NumPy 데이터 타입
- 다음 페이지 NumPy 배열 형태