> 백엔드 개발 > 파이썬 튜토리얼 > Python 빅 데이터에서 Numpy Array를 사용해야 하는 이유는 무엇입니까?

Python 빅 데이터에서 Numpy Array를 사용해야 하는 이유는 무엇입니까?

WBOY
풀어 주다: 2023-05-04 15:13:06
앞으로
1358명이 탐색했습니다.

Python大数据为啥一定要用Numpy Array?

Numpy는 Python 과학 컴퓨팅의 핵심 모듈입니다. 매우 효율적인 배열 개체와 이러한 배열 개체 작업을 위한 도구를 제공합니다. Numpy 배열은 모두 동일한 유형의 많은 값으로 구성됩니다.

Python의 핵심 라이브러리는 목록 목록을 제공합니다. 목록은 가장 일반적인 Python 데이터 유형 중 하나이며 크기를 조정할 수 있고 다양한 유형의 요소를 포함할 수 있어 매우 편리합니다.

그럼 List와 Numpy Array의 차이점은 무엇인가요? 빅데이터를 처리할 때 Numpy Array를 사용해야 하는 이유는 무엇입니까? 답은 성능이다.

Numpy 데이터 구조는 다음 측면에서 더 나은 성능을 발휘합니다.

1. 메모리 크기 - Numpy 데이터 구조는 메모리를 덜 차지합니다.

2. 성능 - Numpy의 하위 계층은 목록보다 빠른 C 언어로 구현됩니다.

3. 연산 방법 - 최적화된 대수 연산 및 기타 방법이 내장되어 있습니다.

다음은 빅데이터 처리에서 List에 비해 Numpy 배열의 장점을 설명합니다.

1. 메모리 사용량 감소

리스트 대신 Numpy 배열을 적절하게 사용하면 메모리 사용량을 20배까지 줄일 수 있습니다.

Python의 기본 List의 경우 새 개체가 추가될 때마다 새 개체를 참조하는 데 8바이트가 필요하고 새 개체 자체는 28바이트를 차지합니다(정수를 예로 사용). 따라서 목록의 크기는 다음 공식으로 계산할 수 있습니다.

64 + 8 * len(lst) + len(lst) * 28바이트

Python大数据为啥一定要用Numpy Array?

Numpy를 사용하면 공간 사용량을 많이 줄일 수 있습니다. 예를 들어, 길이가 n인 Numpy 정수 배열에는 다음이 필요합니다.

96 + len(a) * 8바이트

Python大数据为啥一定要用Numpy Array?

배열이 클수록 더 많은 메모리 공간을 절약할 수 있습니다. 배열에 10억 개의 요소가 있다고 가정하면 메모리 사용량의 차이는 GB 수준이 됩니다.

2. 더 빠른 속도, 내장된 계산 방법

다음 스크립트를 실행하면 특정 차원의 배열 두 개를 생성하고 이를 함께 추가할 수 있으므로 기본 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:51cto.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿