약 100 개의 금융 시장 시리즈가 있으며 100x100x100 = 100 만 셀의 큐브 배열을 만들 것입니다. 표준 오류로 배열을 채우기 위해 각 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
'파이썬' 카테고리의 다른 글
파이썬 하위 스레드를 시작할 때 플라스크가 '요청 컨텍스트 외부에서 작동'하는 현상 (0) | 2020.09.16 |
---|---|
파이썬 Python에서 날짜 범위 만들기 (0) | 2020.09.16 |
파이썬 Django 모델 관리자 objects.create 문서는 어디에 있습니까? (0) | 2020.09.16 |
파이썬에서 float 목록을 바이트로 압축하는 가장 빠른 방법 (0) | 2020.09.16 |
파이썬 UnicodeEncodeError : 'ascii'코덱은 위치 20의 문자 u '\ xa0'을 인코딩 할 수 없습니다 : 서 수가 범위에 없습니다 (128). (0) | 2020.09.16 |
댓글