파이썬 기초 문법 강의 – 4일차 Numpy

파이썬 기초 문법 강의 – 4일차 Numpy

파이썬에서 가장 많이 사용되는 패키지중 하나인 Numpy입니다.

Numpy?

Numarray와 Numeric이라는 오래된 Python 패키지를 계승해서 나온 수학 및 과학 연산을 위한 파이썬 패키지입니다. Py는 파이썬을 나타내기 때문에, 일반적으로 넘파이라고 읽습니다.

프로그래밍 하기 어려운 C, C++, Fortran등의 언어에 비하면, NumPy로는 꽤나 편리하게 수치해석을 실행할 수 있으며, 게다가 Numpy 내부는 상당부분 C나 포트란으로 작성되어 실행 속도도 꽤 빠른편이라고 합니다. 넘파이 자체만으로도 난수생성, 푸리에변환, 행렬연산, 간단한 기술통계 분석 정도는 가능하지만 실제로는 Scipy, Pandas, matplotlib 등 다른 Python 패키지와 함께 쓰이는 경우가 일반적입니다.

여기에서 패키지라는 용어가 나오는데 잠깐 알아보고 넘어가겠습니다.

파이썬 라이브러리, 패키지, 모듈이란?

파이썬에서 앞서 말씀드린 PIP(Package Installer for Python)을 통해서 외부 패키지를 다운로드 받아서 설치하게 되는데요.

하나의 .py 파일은 모듈이며, 모듈을 포함하는 디렉토리(directory)는 패키지로 정의됩니다. 그리고 패키지의 모음을 라이브러리라고 할 수 있습니다.

라이브러리 >= 패키지 >= 모듈이라고 할 수 있습니다.

예를 들어아래와 같은 calculator.py 파일을 만들면 간단한 계산기 모듈이 됩니다.

# calculator.py

def add(a, b):
    return a + b

그리고 이 모듈을 불러올때는 이제 import를 통해서 가져오게 되는데요.

import는 크게 3가지 방법으로 주로 사용됩니다.

  • 모듈을 import하고, module.function()syntax를 따라 호출
    import calculator
    calculator.add()
  •  from statement를 사용해 모듈 불러오기
    from calculator import add
    add()
  • import 후 alias를 사용
    import calculator as c
    c.add()

규모가 큰 모듈이라면 이를 그룹화해서 관리하기 위해서 패키지화를 시키는데요. 이 것이 패키지입니다. numpy와 같은 수치 계산용 모듈이 모여져 있는 것을 패키지라고 합니다.

그리고 이러한 패키지들을 모아서 한번에 사용할 수 있게 하는 것이 라이브러리인데요. 아래와 같은 대표적인 라이브러리가 있습니다.

  • Requests : Python용 HTTP라이브러리
  • Beautiful Soup : Python용 HTML 파싱 라이브러리

Numpy 사용하기

먼저 Numpy는 패키지이기 때문에 사용하기 위해서는 import를 통해 불러와야 합니다. 앞서 말씀드린 3가지 방식 중 가장 마지막에 나오는 약어(alias)를 통해 불러왔습니다. 만약 없는 경우 앞서 말씀드린 PIP를 통해 설치해야 합니다. CMD 창에서 pip install numpy를 하셔야 합니다.

import numpy as np

k=np.array([[1,2,3],[4,5,6]])

print(k)

print(k.shape)

np에는 다양한 함수가 내장되어 있는데요.

일정한 간격으로 나눠주는 linspace(start,end,num) num를 생략하면 50개로 나눠줍니다. 이외에도 행렬을 1로 채워주는 ones, 0으로 채우는 zeros, 단위행렬을 만들어주는 eye가 있습니다.

이 외에도 다양한 함수가 있습니다.

ndim : 차원을 나타냄
shape : array의 크기를 튜플로 표현
size : 요소의 총 수
dtype : 데이터의 유형
T : 전치 결과(행열 바꾸기)
reshape : 배열 변환
astype(타입) : 타입 변환

행렬간 사칙연산 역시 가능합니다.

x=np.array([1,2,3])
y=np.array([4,5,6])
x+y
dot은 내적입니다
1*4+2*5+3*6 이죠

주요 계산 함수는 아래와 같습니다.
add : 덧셈
subtract : 뺄셈
multiply : 곱셈
divide : 나눗셈
dot : 내적
sqrt : 루트
matmul : 행렬곱

행렬 역시 인덱싱이 가능합니다.

array = np.arange(9).reshape(3,3)
print(array)

array[:2,1:]
행은 0~2행까지, 열은 1열부터 끝까지

이 외에도 많은 함수들이 있는데요. 테스트 해보시면서 연습해보시길 추천드립니다.

Similar Posts

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다