Numpy는 다차원 배열을 쉽게 처리하고 효율적으로 사용할 수 있도록 지원하는 파이썬 패키지입니다. Numpy는 데이터 구조 외에도 수치 계산을 위해 효율적으로 구현된 기능을 제공합니다. 데이터 분석을 할떄, Pandas와 함께 자주 사용하는 도구로 등장합니다.
넘파이를 사용하는 이유 :
데이터란 이미지, 오디오, 텍스트, 숫자 등 다양한 형태와 크기로 존재합니다. 사람은 이런 데이터들을 가지고 이해하지만 컴퓨터는 0 또는 1
만 이해합니다. 여기서 핵심은 데이터를 숫자의 배열로 볼 수 있습니다. 실제로 데이터 분석을 수행하기 위한 전제조건은 컴퓨터가 이해할 수
있도록 데이터를 숫자 형식으로 변환하는 것입니다. 여기서 효율적으로 배열을 저장 및 조작할 수 있어야 하는데 이러한 요구사항으로 Numpy
패키지가 나오게 됩니다. 파이썬의 내장 기능인 리스트 또한 Numpy 배열과 동일한 기능을 제공할 수 있기 때문에 왜 Numpy를 사용해야 하는지
의문이 듭니다. 배열의 크기가 작으면 문제가 되지 않지만 Numpy 배열은 데이터의 크기가 커질수록 저장 및 가공을 하는데 효율성을 보장합니다.
이러한 장점으로 파이썬의 Numpy 패키지는 Data Science에 핵심적인 도구로 인식이 되고 있습니다.
!pip install numpy
Requirement already satisfied: numpy in c:\programdata\anaconda3\lib\site-packages (1.19.2)
import numpy as np
array1 = np.array([1,2,3,4])
print(array1)
print(type(array1))
[1 2 3 4] <class 'numpy.ndarray'>
넘파이를 사용하기 위해서는 해당 모듈을 불러와야합니다. import 뒤에 모듈의 이름을 입력하여 불러올 수 있으며 이 뒤에서 numpy를 불러올 때는 np. 을 통해서 불러오면 됩니다. '.' 의 의미는 np안에 즉 numpy 안에 정의된 함수를 사용하겠다는 의미입니다.
temp = [[1,2,3],[4,5,6],[7,8,9],[10,11,12]]
array2 = np.array(temp)
print(array2)
[[ 1 2 3] [ 4 5 6] [ 7 8 9] [10 11 12]]
.shape는 자주사용되는 기능으로 호출하면 array의 모양을 리턴해줍니다.
print(array1.shape)
print(array2.shape)
(4,) (4, 3)
reshape함수를 통해서 array의 모양을 바꿔줄수 있습니다.
array1_reshape = array1.reshape(2,2)
print(array1_reshape)
print(array1_reshape.shape)
[[1 2] [3 4]] (2, 2)
array2_reshape = array2.reshape(2,6)
print(array2_reshape)
print(array2_reshape.shape)
[[ 1 2 3 4 5 6] [ 7 8 9 10 11 12]] (2, 6)
또한 자주쓰는 기능으로 reshape함수 안에 -1을 넣어줄 수 있습니다. 이렇게하면 자연스레 모양을 맞춰주며 나누어 떨어지지 않는경우 에러를 반환합니다.
array2.reshape(3,-1)
array([[ 1, 2, 3, 4], [ 5, 6, 7, 8], [ 9, 10, 11, 12]])
array2.reshape(5,-1)
--------------------------------------------------------------------------- ValueError Traceback (most recent call last) <ipython-input-12-94d8fe32c9e9> in <module> ----> 1 array2.reshape(5,-1) ValueError: cannot reshape array of size 12 into shape (5,newaxis)
reshape(5,-1)의 경우 12개의 원소를 5행으로 나열할 수 없으므로 에러를 리턴합니다.
array_1 = np.array([[1,2],[3,4]])
array_2 = np.array([[10,20],[30,40]])
print(array_1+array_2)
print()
print(array_1-array_2)
print()
print(array_1*array_2)
print()
print(array_1/array_2)
[[11 22] [33 44]] [[ -9 -18] [-27 -36]] [[ 10 40] [ 90 160]] [[0.1 0.1] [0.1 0.1]]
위와같이 기본적인 사칙연산을 제공하며 행렬곱 같은 경우는 matmul함수를 이용합니다.
np.matmul(array_1,array_2)
array([[ 70, 100], [150, 220]])
Pandas_3 (0) | 2021.06.24 |
---|---|
Pandas2 (0) | 2021.06.20 |
Pandas_1 (0) | 2021.06.18 |
Numpy_2 (0) | 2021.06.14 |
댓글 영역