-
[Python] List보다 Numpy 가 빠른이유programming/Python 2022. 4. 23. 11:50
List vs Numpy
파이썬에서 List는 여러 값들을 저장할 수 있는 자료구조로써 활용도가 매우 높습니다. 리스트는 다양한 자료형의 데이터를 여러 개를 저장할 수 있으며 쉽게 데이터를 수정할 수 있습니다. 하지만 데이터의 처리 양이 많아지고 처리방법이 복잡해질수록 많은 사람들은 Numpy ndarray를 사용합니다. 오늘은 많은 사람들이 왜 List 보다 Numpy ndarray를 더 많이 사용하는지 알아보도록 하겠습니다.
Numpy
- 큰 matrix 처리 및 다양한 연산 기능을 제공 합니다.
- 반복문 없이 데이터 배열에 대한 처리를 지원합니다.
- 선형대수와 관련된 다양한 기능을 제공합니다.
- C, C++, 포트란 등의 언어와 통합이 가능합니다.
Built-in List 보다 Numpy의 ndarray 가 왜 빠른가?
메모리 접근 방식에 대한 차이
- ndarray는 int type의 data를 저장할 때 element들이 메모리에 연속적으로 저장되어 있지만 list의 경우 int type data의 값들이 메모리에 연속적으로 저장돼있지 않고 element의 주소를 가지고 있습니다. 주소를 타고 가더러도 객체 자체가 있고, 객체 내에서 ob_digit으로 간 다음 element에 접근해야 합니다. ndarray에 비해 list가 접근 단계가 많습니다.
- 리스트는 여러 가지 dtype을 하나의 array에 넣을 수 있지만 numpy의 ndarray는 하나의 배열에 하나의 dtype만 넣을 수 있습니다.
Numpy 병렬 처리
- 하나의 작업을 여러 개의 서브 작업으로 나눠서 처리합니다.
C언어와 포트란으로 구현
- 코드를 기계어로 변환 과정 없이 한 줄 한줄 해석해서 실행하는(인터프린터) 파이썬 보다 코드를 모두 기계어로 변환한 후에 기계어 코드로 실행하는(컴파일) 언어로 만들어져 있습니다.
넘파이의 배열 안에는 동일한 타입의 데이터만 지정할 수 있어서 속도적인 측면에서 리스트에 앞서지만 리스트처럼 여러 가지 데이터 타입을 저장할 수 없습니다.
'programming > Python' 카테고리의 다른 글
[Python] 타이핑, 타입 힌트 (typing / type hint) (0) 2022.11.06 [Python]_8. 튜플(Tuple) (0) 2021.11.17 [Python]Splitfloders 한줄로 Train/Test/Validation 나누기 (0) 2021.11.15 [Python]Python의 유용한 라이브러리들 (0) 2021.09.16 [자료구조]링크드 리스트(Linked List) (1) 2021.06.08