Numpy는 Python 과학 컴퓨팅의 핵심 모듈입니다. 매우 효율적인 배열 개체와 이러한 배열 개체 작업을 위한 도구를 제공합니다. Numpy 배열은 모두 동일한 유형의 많은 값으로 구성됩니다.
Python의 핵심 라이브러리는 목록 목록을 제공합니다. 목록은 가장 일반적인 Python 데이터 유형 중 하나이며 크기를 조정할 수 있고 다양한 유형의 요소를 포함할 수 있어 매우 편리합니다.
그럼 List와 Numpy Array의 차이점은 무엇인가요? 빅데이터를 처리할 때 Numpy Array를 사용해야 하는 이유는 무엇입니까? 답은 성능이다.
Numpy 데이터 구조는 다음 측면에서 더 나은 성능을 발휘합니다.
1. 메모리 크기 - Numpy 데이터 구조는 메모리를 덜 차지합니다.
2. 성능 - Numpy의 하위 계층은 목록보다 빠른 C 언어로 구현됩니다.
3. 연산 방법 - 최적화된 대수 연산 및 기타 방법이 내장되어 있습니다.
다음은 빅데이터 처리에서 List에 비해 Numpy 배열의 장점을 설명합니다.
리스트 대신 Numpy 배열을 적절하게 사용하면 메모리 사용량을 20배까지 줄일 수 있습니다.
Python의 기본 List의 경우 새 개체가 추가될 때마다 새 개체를 참조하는 데 8바이트가 필요하고 새 개체 자체는 28바이트를 차지합니다(정수를 예로 사용). 따라서 목록의 크기는 다음 공식으로 계산할 수 있습니다.
Numpy를 사용하면 공간 사용량을 많이 줄일 수 있습니다. 예를 들어, 길이가 n인 Numpy 정수 배열에는 다음이 필요합니다.
배열이 클수록 더 많은 메모리 공간을 절약할 수 있습니다. 배열에 10억 개의 요소가 있다고 가정하면 메모리 사용량의 차이는 GB 수준이 됩니다.
다음 스크립트를 실행하면 특정 차원의 배열 두 개를 생성하고 이를 함께 추가할 수 있으므로 기본 List와 Numpy Array 간의 성능 차이를 확인할 수 있습니다.
import time import numpy as np size_of_vec = 1000 def pure_python_version(): t1 = time.time() X = range(size_of_vec) Y = range(size_of_vec) Z = [X[i] + Y[i] for i in range(len(X)) ] return time.time() - t1 def numpy_version(): t1 = time.time() X = np.arange(size_of_vec) Y = np.arange(size_of_vec) Z = X + Y return time.time() - t1 t1 = pure_python_version() t2 = numpy_version() print(t1, t2) print("Numpy is in this example " + str(t1/t2) + " faster!")
결과는 다음과 같습니다.
0.00048732757568359375 0.0002491474151611328 Numpy is in this example 1.955980861244019 faster!
보시다시피 Numpy는 기본 배열보다 1.95배 빠릅니다.
조심하면 Numpy 배열이 직접 덧셈 연산을 수행할 수도 있다는 것을 알 수 있습니다. 기본 배열에서는 이를 수행할 수 없습니다. 이것이 Numpy의 작업 방법의 장점입니다.
이러한 성능 이점이 내구성이 있는지 입증하기 위해 몇 가지 반복 테스트를 더 수행할 것입니다.
import numpy as np from timeit import Timer size_of_vec = 1000 X_list = range(size_of_vec) Y_list = range(size_of_vec) X = np.arange(size_of_vec) Y = np.arange(size_of_vec) def pure_python_version(): Z = [X_list[i] + Y_list[i] for i in range(len(X_list)) ] def numpy_version(): Z = X + Y timer_obj1 = Timer("pure_python_version()", "from __main__ import pure_python_version") timer_obj2 = Timer("numpy_version()", "from __main__ import numpy_version") print(timer_obj1.timeit(10)) print(timer_obj2.timeit(10)) # Runs Faster! print(timer_obj1.repeat(repeat=3, number=10)) print(timer_obj2.repeat(repeat=3, number=10)) # repeat to prove it!
결과는 다음과 같습니다.
0.0029753120616078377 0.00014940369874238968 [0.002683573868125677, 0.002754641231149435, 0.002803879790008068] [6.536301225423813e-05, 2.9387418180704117e-05, 2.9171351343393326e-05]
두 번째 출력 시간이 항상 훨씬 더 짧다는 것을 알 수 있으며 이는 이러한 성능 이점이 지속된다는 것을 증명합니다.
그래서 금융 데이터, 주식 데이터 등의 빅 데이터 연구를 수행하는 경우 Numpy를 사용하면 메모리 공간을 많이 절약하고 더 강력한 성능을 얻을 수 있습니다.
참고자료:https://www.php.cn/link/5cce25ff8c3ce169488fe6c6f1ad3c97
오늘의 Python 실습 튜토리얼이 마음에 드셨다면 계속 팔로우해주세요.
위 내용은 Python 빅 데이터에서 Numpy Array를 사용해야 하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!