-
728x90반응형
Numpy란?
Numpy는 다차원 배열을 쉽게 처리하고 효율적으로 사용할 수 있도록지원하는 파이썬의 패키지입니다. NumPy는 데이터 구조 외에도 수치 계산을 위해 효율적으로 구현된 기능을 제공합니다. 데이터 분석을 할때, Pandas와 함께 자주 사용하는 도구로 등장합니다.
왜 Numpy를 사용할까
데이터란 이미지, 오디오, 텍스트, 숫자 등 다양한 형태와 크기로 존재합니다. 사람은 이런 데이터들을 가지고 이해하지만 컴퓨터는 0 또는 1만 이해합니다. 여기서 핵심은 데이터를 숫자의 배열로 볼 수 있습니다. 실제로 데이터 분석을 수행하기 위한 전제 조건은 컴퓨터가 이해할 수 있도록 데이터를 숫자 형식으로 변환하는 것입니다. 여기서 효율적으로 배열을 저장 및 조작할 수 있어야 하는데 이러한 요구사항으로 Numpy 패키지가 나오게 됩니다. 파이썬의 내장 기능인 리스트 또한 Numpy 배열과 동일한 기능을 제공할 수 있기 때문에 왜 Numpy를 사용해야 하는지 의문이 듭니다. 배열의 크기가 작으면 문제가 되지 않지만 Numpy 배열은 데이터의 크기가 커질수록 저장 및 가공을 하는데 효율성을 보장합니다. 이러한 장점으로 파이썬의 Numpy 패키지는 Data Science에 핵심적인 도구로 인식이 되고 있습니다.
설치
아래의 명령어로 numpy 패키지를 쉽게 설치할 수 있습니다.
$ pip install numpy
배열 선언
numpy에 배열을 넘겨 numpy 타입으로 생성할 수 있습니다.
import numpy as np arr1 = np.array(\[1, 2, 3, 4\]) print(arr1) print(type(arr1)) $ \[1 2 3 4\] $ <class 'numpy.ndarray'>
array 메소드에 dtype 키워드로 타입을 지정하여 어레이의 값들에 타입을 지정할 수 있습니다.
- 해당 키워드는 float, int, bool, str,object 등을 줄 수 있습니다. arr2 = np.array(\[1, 2, 3, 4\], dtype='float32') print(type(arr2)) print(arr2) $ <class 'numpy.ndarray'> $ \[1. 2. 3. 4.\]
또한 1차원 배열 이상을 선언할 수 있습니다.
lists = \[\[0,1,2\], \[3,4,5\], \[6,7,8\]\] arr2d = np.array(lists) print(arr2d) $ \[\[0 1 2\] $ \[3 4 5\] $ \[6 7 8\]\]
다중 배열에서 특정 값을 호출할 때, list와 다르게 콤마로 구분지어 사용합니다.
x2 = np.array(\[\[3, 2, 5, 5\],\[0, 1, 5, 8\], \[3, 0, 5, 0\]\]) print(x2\[0,3\]) $ 5
그리고 파이썬의 내장 기능인 리스트와 다르게 Numpy는 아래와 같은 기능을 제공합니다.
\-- 내장 기능 list는 아래와 같이 동작한다. list1 = \[1,2,3,4\] print(list1 \* 2) print(list1 + 2) print(list1 \* list1) $ \[1, 2, 3, 4, 1, 2, 3, 4\] $ 오류 발생 $ 오류 발생
아래는 파이썬의 내장기능 list와 비교하여 Numpy만의 기능 및 장점입니다.
1. Numpy의 배열은 생성 이후 크기를 변경할 수 없음. 만약 변경해야 하는 사항이 있을 시, 새로 생성해야 함 2. list와 다르게 Numpy 배열의 모든 값의 타입은 dtype으로 같음 3. list보다 메모리 공간을 덜 차지함
배열에서 제공하는 속성은 다음과 같습니다.
x = np.random.randint(0, 10, (3, 3)) print("ndim: ", x.ndim) print("shape:", x.shape) print("x size: ", x.size) print("dtype:", x.dtype) print("itemsize:", x.itemsize, "bytes") print("nbytes:", x.nbytes, "bytes") $ ndim: 2 $ shape: (3, 3) $ x size: 9 $ dtype: int64 $ itemsize: 8 bytes $ nbytes: 72 bytes
728x90반응형'python' 카테고리의 다른 글
★schedule: 정해진 시간에 파이썬(Python) 스크립트 자동 실행 (0) 2022.01.18 [Python] 파이썬 라이브러리 : schedule (0) 2022.01.18 Python入門 (0) 2021.03.31 [Python]문자열로된 날짜 datetime으로 변환 (0) 2021.03.26 Interactive Learning Sites for Python (0) 2021.03.25