• 회원가입
  • 로그인
  • 구글아이디로 로그인

[numpy] PY - NumPy Array Copy vs View (배열 복사 vs 뷰) ★

2956  

목차

  1. 배열 (Copy / View) 차이점
  2. 배열 Copy
  3. 배열 view
  4. 배열의 데이터 개별소유 여부 확인

 

배열 (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]

 



분류 제목
module Python - cmath.sinh(x) 메서드 -
module Python - cmath.sqrt(x) 메서드 -
module Python - cmath.tan(x) 메서드 -
module Python - cmath.tanh(x) 메서드 -
module Python - cmath.e 상수 - 오일러 상수 (2.71...)
module Python - cmath.inf 상수 - float 자료형의 무한대 상수 (= inf) 반환.
module Python - cmath.infj 상수 - complex 자료형의 무한대 상수 (= infj) 반환.
module Python - cmath.nan 상수 - float 자료형의 nan 상수 (= nan) 반환.
module Python - cmath.nanj 상수 - complex 자료형의 nan 상수 (= nanj) 반환.
module Python - cmath.pi 상수 - 원주율 (= 3.14...) 반환. (= 파이 상수)
module Python - cmath.tau 상수 - 원주율 2배 (= 6.28...) 반환. (= 타우 상수)
howto Python - digit 숫자 (0~9)를 정사각형 형태로 나열.
pandas Python - Pandas Intro (판다스 소개)
pandas Python - Pandas Start (설치/시작/버전확인)
pandas Python - Pandas Series (시리즈)
pandas Python - Pandas DataFrames (데이터프레임)
pandas Python - Pandas Read CSV (CSV 읽기)
pandas Python - Pandas Read JSON (JSON 읽기)
pandas Python - Pandas Analyzing DataFrames (데이터프레임 분석)
pandas Python - Pandas Cleaning Data (데이터 청소/정리)
23/24
목록
찾아주셔서 감사합니다. Since 2012