본문 바로가기
파이썬

파이썬 numpy 배열의 파이썬 메모리 사용량

by º기록 2021. 2. 12.
반응형

나는 파이썬을 사용하여 큰 파일을 분석하고 메모리 문제가 발생하고 있으므로 sys.getsizeof ()를 사용하여 사용량을 추적하고 추적했지만 numpy 배열의 동작은 기괴합니다. 다음은 내가 열어야하는 알베도지도와 관련된 예입니다.

>>> import numpy as np
>>> import struct
>>> from sys import getsizeof
>>> f = open('Albedo_map.assoc', 'rb')
>>> getsizeof(f)
144
>>> albedo = struct.unpack('%df' % (7200*3600), f.read(7200*3600*4))
>>> getsizeof(albedo)
207360056
>>> albedo = np.array(albedo).reshape(3600,7200)
>>> getsizeof(albedo)
80

데이터는 여전히 존재하지만 3600x7200 픽셀 맵인 객체의 크기는 ~ 200MB에서 80 바이트로 늘어났습니다. 나는 내 기억 문제가 끝나고 모든 것을 numpy 배열로 변환하기를 희망하지만,이 행동이 사실이라면 어떤 식 으로든 정보 이론이나 열역학 법칙을 위반할 것이라고 생각합니다. 그래서 저는 getsizeof ()가 numpy 배열에서 작동하지 않는다고 생각하는 경향이 있습니다. 어떤 아이디어?

 

해결 방법

 


>>> import numpy as np
>>> from sys import getsizeof
>>> a = [0] * 1024
>>> b = np.array(a)
>>> getsizeof(a)
8264
>>> b.nbytes
8192

 

참조 페이지 https://stackoverflow.com/questions/11784329

 

 

반응형

댓글