본문 바로가기

파이썬/numpy

Numpy 1. numpy의 장점

pandas는 csv 파일들을 다루면서 몇 번 사용해본 경험이 있는데 비해 numpy는 거의 사용해본적이 없어서 O'reilly Python For Data Analysis를 읽으면서 내용을 정리합니다. 비전공자도 이해할만큼 쉽게 작성할 계획입니다. 제가 비전공자라 어렵게 하라 해도 못합니다.

 

- 틀린 내용, 뻘소리 다수!

- 환경 설정은 아나콘다 3.8

 

Numpy에서는 여러 기능을 제공하지만 가장 중요한건 역시

빠른 배열 계산

이 아닐까 싶습니다.

 

몇 만 정도의 배열계산은 파이썬 list로도 웬만큼 가능하겠지만, 만약 그 숫자가 매우 많아지거나 특수한 조건이 계속 걸리게 된다면 그 속도는 아마 극악에 달하게 될겁니다.

 

길이가 1천만인 numpy 배열 arr_np, 파이썬 list arr_py가 있습니다.

이 배열의 모든 원소에 100씩 곱하는 시간이 얼마나 걸릴지 확인해보겠습니다.

 

numpy 배열 시간

numpy 배열은 30ms 정도가 걸렸습니다.

 

 

파이썬 list 시간

파이썬 list는 1.19초가 걸렸습니다.

 

이처럼 1차원 배열의 숫자만 길어지더라도 연산의 속도는 매우 크게 벌어집니다.

대부분의 데이터 분석이 다차원 데이터를 다루는 것을 미루어 볼 때(엑셀에서 컬럼 1개만 쓰는 경우가 얼마나 될까요...?), 파이썬 자체 list보다는 numpy와 pandas와 같은 데이터 분석 라이브러리의 필요성은 매우 커보입니다.

 

그렇다면 numpy가 이렇게 빠를 수 있는 이유는 무엇일까요?

내부적으로 파이썬 내장 객체와는 구분된 메모리 블록에 연속으로 저장되고, numpy의 많은 알고리즘이 C로 작성되었기 때문에 메모리에 매우 빠르게 접근하여 연산할 수 있기 때문입니다. 이런 이유로 반복문을 사용하지 않아도 배열 연산을 할 수 있습니다(C의 배열과 포인터의 관계를 생각하면 될 것 같습니다).

 

 

 

 

'파이썬 > numpy' 카테고리의 다른 글

Numpy 6. Boolean 2, Numpy 조건 연산자  (0) 2020.10.28
Numpy 5. boolean  (0) 2020.10.26
Numpy 4. 인덱싱, 슬라이싱  (0) 2020.10.26
Numpy 3. Numpy 배열의 산술연산  (0) 2020.10.23
numpy 2. ndarray  (0) 2020.10.23