본문 바로가기

Programming Language/NumPy

(3)
Shallow Copy v.s. Deep Copy 넘파이 배열을 사용하다보면 변수를 지정하는 방법에 따라, 변수에 저장된 값이 변동이 되는 경우와 되지 않는 경우로 나뉜다. 기본 적으로 특정 ndarray를 가리키는 변수를 다른 변수에 대입하게 되면, 2개의 다른 변수가 하나의 ndarray를 가리키게 되는데, 이 대입을 하는 방식에서 얕은 복사(Shallow Copy)와 깊은 복사(Deep Copy)의 2가지 형태로 나뉠 수 있다. 배열의 shape을 바꾸거나 슬라이싱을 할경우 원본 ndarray의 데이터를 공유하는 새로운 ndarray 객체를 생성하는데, 우리는 이를 보고 얕은 복사라고한다. 만약 원본 ndarray와 값을 공유하지 않고 별도의 객체 메모리를 가지고 싶다면, .copy() 메소드를 사용하도록 한다.
넘파이 배열(ndarray)이란? 넘파이 배열은 N차원의 배열 객체의 형태이며, 하나의 넘파이 배열 내에서는 모든 원소에대해 동일한 데이터 형태를 지니며, 차원(Dimension)을 뜻하는 축(Axis)의 개념이 빈번하게 사용된다. 넘파이 배열은 기본적으로 실수 형태의 데이터 저장할때는 'Float 64'로 정수형태의 데이터를 저장할때는 'Int 32'로 저장이된다. 실수 형태의 원소를 정수 형태로 변환할 경우에는 소수점 이하가 버림되고 변환된다. Tip!> 'ndarray.dim': N차원 배열의 차원의 수를 반환함. 'ndarray.shape': N차원 배열의 각 축 방향에 대한 차원 크기를 튜플형식으로 반환함. 'ndarray.dtype': N차원 배열의 원소에 대한 데이터 형태를 반환함. 'ndarray.size': N차원 배열에..
NumPy 이란? NumPy 는 파이썬을 기반으로 최적화된 고차원 수치계산을 가능하게끔 도와주는 라이브러리이며, 'import numpy as np' 이란 호출명령어로 파이썬 개발환경에서 사용할 수 있음. 넘파이의 배열은 여러 데이터타입의 데이터를 원소를 가질 수 있는 파이썬 리스트와 달리 동일한 데이터 타입(dtype)과 크기로 이루어진 원소들을 가지며, 차원의 크기에 따른 정수 인덱싱을 지원함. 배열의 모든 원소가 같은 데이터 타입이므로, 각 원소는 같은 크기의 메모리를 가짐. 대다수의 기본적인 연산에서 'for loop'를 사용하지 않는 element-wise한 연산을 지원하므로 파이썬 리스트기반의 연산보다 빠르게 코드를 구성할 수 있음 (항상 효율적인것은 아님!!). 'np.array( )'를 사용하면 Python..