나의 전공 노트

파이썬 / 넘파이(NumPy): 데이터 분석을 위한 필수 라이브러리

JoyDo 2022. 10. 27. 18:32
728x90

넘파이(NumPy)

넘파이 라이브러리는 C 언어로 구현이 되어 있기 때문에 빠른 배열 처리와 고성능 수치 계산을 지원한다. 주로 벡터 및 행렬 연산에 필요한 기능을 제공한다. 넘파이는 데이터 분석에 필요한 다양한 기능을 포함하고 있으며, 파이썬의 기존 자료 구조보다 효율적인 방법으로 데이터를 다룰 수 있어 팬더스(Pandas)나 맷플롯립(matplotlib.pyplot) 라이브러리에서도 사용하고 있다. 수학적 개념을 넘파이로 표현만 가능하다면 텐서플로 같은 딥러닝 프레임워크 없이도 딥러닝 모델을 구현할 수 있을 정도로 강력하다.

수치 계산을 할 때는 배열이나 행렬을 많이 사용한다. 이때 가장 기본이 되는 단위는 배열이다. 배열은 행렬 개념으로 사용되며, 배열을 생성하려면 넘파이 라이브러리의 array() 함수를 이용한다.

 

넘파이 배열 생성

 

  1. numpy 모듈을 np라는 이름으로 불러 온다. as 키워드를 사용해 모듈의 별칭을 지정할 수 있다.
  2. np.array() 함수를 이용해 1차원 배열을 생성한다. 배열은 행렬 개념으로 사용되기 때문에 이후 행렬 산술 연산에 유용하게 사용된다.
  3. print(arr) --> 생성된 배열을 출력한다.
  4. print(type(arr)) --> 생성된 배열 타입을 출력한다. array() 함수는 numpy.ndarray 객체로 배열을 만들어 반환한다. 

 

넘파이 배열 생성 결과

 

수학에서 행렬(matrix)은 1개 이상의 숫자를 사각형의 배열로 나열한 것을 의미한다. 가로줄을 행(row), 세로줄을 열(column)이라고 하며, 이를 합쳐 행렬이라고 부른다. 대량의 수치 데이터를 연산할 때 행렬을 사용하면 컴퓨터가 효율적으로 처리할 수 있다. 딥러닝에서도 행렬을 이용해 벡터 연산을 하기 때문에 넘파이가 필수로 사용된다.

N차원 배열 역시 array() 함수를 이용하는데, 열 요소들을 대괄호 []로 묶고 마지막에 대괄호 []로 묶은 열 요소들을 다시 한 번 대괄호 []로 묶으면 행렬 구조가 완성된다. 

 

2x3 행렬 표현하기
2x3 행렬 표현하기 결과

 

3x2 행렬과 2x2 행렬의 곱셈
3x2 행렬과 2x2 행렬의 곱셈 결과

 

넘파이를 이용하면 스칼라곱도 쉽게 할 수 있다. 여기서 스칼라는 벡터 공간에서 벡터를 곱할 수 있는 양이며 상숫값을 의미한다. 갑자기 벡터 공간이라는 표현이 나왔는데, 벡터 공간도 행렬로 표현 가능하다는 정도만 알고 있으면 된다. 

스칼라곱 하기
스칼라곱 결과

조경래(2020), 처음 배우는 딥러닝 챗봇, 한빛미디어(주), 83-89.
728x90