Numpy, 한 번 알아보자! - 1. Numpy란?

2019. 3. 4. 22:52Python/Data Science


Numpy란 무엇인가?


Wiki 에 따르면 다음과 적혀있다.


NumPy는 행렬이나 일반적으로 대규모 다차원 배열을 쉽게 처리 할 수 있도록 지원하는 파이썬의 라이브러리이다. NumPy는 데이터 구조 외에도 수치 계산을 위해 효율적으로 구현된 기능을 제공한다.


한 마디로 말하면, 수학적 연산을 빠르고, 쉽게 하기 위해서 사용 한다고 볼 수 있다. 근데 굳이 Numpy를 쓰는 이유는 무엇일까?


Python은 여러분들이 알다 싶이 객체지향 언어이다. 문제는 int, float 같은 간단한 데이터 타입도 객체로 보호가 되어 있다. 그렇기 때문에 연산이 느리기도 하다. 하지만, 이를 C의 int, float와 같은 데이터 포맷으로 변환하여 연산을 하게 된다면 속도는 빨라질 것이다.


또한 행렬을 연산하기 위해 메모리를 효율적으로 사용하는 강력한 알고리즘이 탑제 되어 있다. 그러므로 수치 해석 및 계산, 선형 대수 쪽에서 안쓸래야 안 쓸 수 없는 라이브러리라고 할 수 있다! 



Numpy 설치하기


Numpy는 여러분이 Anaconda로 Python을 사용 하고 있다면 설치 할 필요가 없다. 하지만, 일단 Python을 사용하고 있다면 터미널에서 다음 명령어를 실행하여 Numpy 모듈을 설치 하여야 한다.


$ pip install numpy



Numpy 간단한 코드 짜보기


Numpy를 이용해서 간단하게 코드를 짜보자. 선형대수의 기본이 되는 행렬을 한 번 만들어 보자.


import numpy as np  # 통상적으로 numpy를 np 라는 이름으로 사용

a = np.arange(15).reshape(3, 5)
# [0, 1, .. , 15] 행렬을 3행 5열의 numpy의 2차원 행렬로 변환
print(a)  # a 모양 출력
print(a.ndim)  # a의 차원 갯수 출력
print(a.dtype.name)  # a의 원소 타입 출력
print(a.itemsize)  # a의 원소 당 바이트 출력
print(a.size)  # a의 사이즈 출력
print(type(a))  # a의 타입 출력

b = np.array([10, 20, 30])  # 리스트를 numpy의 행렬로 변환
print(b)  # b 출력
print(type(b))  # b 타입 출력


출력 결과는 다음과 같다.


[[ 0  1  2  3  4]
 [ 5  6  7  8  9]
 [10 11 12 13 14]]
2
int32
4
15
<class 'numpy.ndarray'>
[10 20 30]
<class 'numpy.ndarray'>


일단 우리가 다루는 numpy 행렬 데이터의 타입을 ndarray 라고 한다. 이 ndarray에서 사용하는 속성들을 간단히 설명하자면 다음과 같다.


  • ndarray.ndim : 현재 행렬의 차원 갯수를 반환한다
  • ndarray.shape : 현재 행렬의 행렬 모양을 반환한다.
  • ndarray.size : 현재 행렬에 담긴 원소 갯수를 반환한다.
  • ndarray.dtype : 현재 행렬의 원소의 데이터 타입을 반환한다.
  • ndarray.itemsize : 현재 행렬의 원소의 Byte 사이즈를 반환한다.
  • ndarray.data : 현재 행렬을 담고 있는 메모리의 버퍼 위치를 반환한다.


다음 시간에는 한 번 만들어진 ndarray 행렬의 여러 가지 생성 방법, 덧셈, 뺄셈, 곱셈 연산등을 해 보도록 하겠다!