프로그래밍 언어/Python

일반 Python 목록에 비해 NumPy의 장점

Rateye 2021. 12. 15. 11:46
728x90
반응형
질문 : 일반 Python 목록에 비해 NumPy의 장점은 무엇입니까?

일반 Python 목록에 비해 NumPy 의 장점은 무엇입니까?

약 100 개의 금융 시장 시리즈가 있으며 100x100x100 = 1 백만 셀의 큐브 배열을 만들 것입니다. 표준 오류로 배열을 채우기 위해 각 x를 각 y 및 z로 회귀 (3 변수) 할 것입니다.

"대형 행렬"의 경우 성능 및 확장 성 이유로 인해 Python 목록과 반대로 NumPy를 사용해야한다고 들었습니다. 사실, 저는 파이썬 목록을 알고 있고 그것들이 저를 위해 일하는 것 같습니다.

NumPy로 이동하면 어떤 이점이 있습니까?

1000 개의 계열 (즉, 큐브에 10 억 개의 부동 소수점 셀)이 있으면 어떻게됩니까?

답변

NumPy의 배열은 Python 목록보다 더 간결합니다 .Python에서 설명하는 목록 목록은 최소 20MB가 소요되는 반면 셀에 단 정밀도 부동이있는 NumPy 3D 배열은 4MB에 맞습니다. NumPy를 사용하면 항목 읽기 및 쓰기 액세스도 더 빨라집니다.

아마도 당신은 백만 개의 셀에 대해 그다지 신경 쓰지 않을 수도 있지만 확실히 10 억 개의 셀을 원할 것입니다. 두 접근 방식 모두 32 비트 아키텍처에 적합하지 않지만 64 비트 빌드를 사용하면 NumPy가 4GB 정도에서 벗어날 수 있습니다. , Python만으로도 최소 약 12GB (크기가 두 배인 많은 포인터)가 필요합니다. 이는 훨씬 더 비싼 하드웨어입니다!

차이점은 대부분 "간접 성"에 기인합니다. Python 목록은 Python 개체에 대한 포인터 배열로, 포인터 당 최소 4 바이트에 가장 작은 Python 개체에 대해 16 바이트를 더한 것입니다 (포인터 유형 4, 참조 횟수 4, 4 값-메모리 할당자는 16으로 반올림됩니다.) NumPy 배열은 균일 한 값의 배열입니다. 단 정밀도 숫자는 각각 4 바이트, 배정 밀도 1, 8 바이트를 사용합니다. 덜 유연하지만 표준 Python 목록의 유연성에 대해 상당한 비용을 지불합니다!

출처 : https://stackoverflow.com/questions/993984/what-are-the-advantages-of-numpy-over-regular-python-lists
728x90
반응형