Onik Lab.

NumPy 소개

December 24, 2019 | 2 Minute Read • 0 Comments

안녕하세요.

이전 글에는 Python 연구 방향과 관련해서 글을 남겼었습니다. 그래서 그 순서에 맞게 앞으로 하나하나 자료를 만들고 여기에 올리고 하는 것을 고려해보고자 합니다.

Python 기초 강좌나 그런 부분은 인터넷 조금만 찾아도 많이 나옵니다. 혼자서 독학도 가능한 수준이고요. 물론 프로그래밍이 그래도 어려울 수도 있는 분들을 위해서 기초 강의는 유튜브에 올리는 것도 사실 반 년 전부터 고려했었고, 이제 슬슬 강의자료 하나씩 올려보기도 할 예정입니다. 다만 이 블로그에 Python 기초 문법이나 그런 것을 다루기에는 약간은 적합하지 않은 면도 있고, 더 좋은 자료도 많아서 생략하겠습니다.

Python 기초 문법을 어느 정도 숙지했다면, 그 다음으로 알아야 할 것은 NumPy라고 볼 수 있습니다. Python으로 개발한 대부분의 프로그램은 숫자 연산을 사용하는 경우가 대부분이며, NumPy 모듈은 이러한 Python 연산을 더욱 용이하게 만드는 모듈이기 때문이죠. 저 또한 NumPy는 약 2년 간 Python 공부를 하면서 꾸준히 다루긴 했습니다만, 다시 한번 제대로 정리하는 차원에서 블로그에 글을 써 보는 것도 괜찮을 것 같다는 생각이 들었습니다. 이에 따라 NumPy와 관련된 자료를 하나씩 올리고자 합니다.

다만 NumPy를 포함한 대부분의 Python 모듈 및 패키지는 각 공식 Documentation에서 상세하게 메뉴얼을 다루고 있고, 정리 또한 잘 되어 있습니다. 그래서 Documentation 위주로 글을 쓰는 것은 어떻게 보면 비효율적이고 사실 남이 쓴 글을 베끼거나 번역한 수준밖에는 되지 않을 것입니다. 그래서 최대한 그러한 부분은 배제하고 필요한 내용 위주로 기술해보고자 하니 참고 바랄게요.

그러면 NumPy의 가장 기본적인 내용부터 살펴보겠습니다.

NumPy가 무슨 단어냐 모르는 분들을 위해서 쓰자면, 그냥 Number + Python 을 줄인 단어로 보시면 간단합니다. 그래서 ‘NumPy’라고 쓰는 것이 더욱 정확한 표현이기도 합니다.

프로그래밍에서 일반적으로 복잡하고 다양한 숫자를 가지고 연산할 때 어떤 식으로 연산할까요. 바로 배열을 사용합니다. NumPy에서는 다차원 배열을 기본 베이스로 하고 있고, 그 속에서 모든 연산이 이루어진다라고 보시면 간단합니다.

일단 기본적인 연산부터 살펴보면 꽤 간단합니다.

a=[10,20,30,40,50]
b=[32,52,27,65,80]
c=[]

for i in range(len(a)):
    c.append(a[i]+b[i])

Python에서 사용하는 자료형만 가지고 리스트 간 덧셈을 한다면 위와 같이 for 문도 사용하고, 각 요소를 indexing해서 표현해야 하기 때문에 꽤 번거롭습니다. 심지어 위 예제는 고작 값이 5개밖에 없는 아주 간단한 리스트 예제일 뿐입니다. 만약 더욱 복잡한 리스트나 딕셔너리 등을 사용하거나 한다면 표현 방법은 더욱 복잡하고 가독성도 떨어지고 난감하겠죠?

하지만 NumPy를 사용한다면 아주 간단해집니다.

import numpy as np

a=np.array([10,20,30,40,50])
b=np.array( [32,52,27,65,80])

c = a+b

그냥 덧셈하면 끝납니다. 간단하죠.

NumPy는 이러한 숫자 연산을 더욱 편리하게 해 주는 모듈입니다.

NumPy는 기본적으로 벡터 연산을 수행하기 때문에 이미지 처리를 하는 데 있어서 아주 적합하다고 볼 수 있으며, 그렇기 때문에 통계학을 포함해서 머신러닝, 인공지능 등 다방면에서 거의 필수로 사용될 정도의 모듈이기 때문에 관심이 있으시다면 반드시 알아두시는 것을 다시 한번 권장할게요.

이 글에서는 NumPy 관련된 홈페이지 몇 개를 소개하고 마치도록 하겠습니다.

감사합니다.