반응형
나는 파이썬을 사용하여 큰 파일을 분석하고 메모리 문제가 발생하고 있으므로 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
반응형
'파이썬' 카테고리의 다른 글
파이썬 Python 3-urllib, HTTP 오류 407 : 프록시 인증 필요 (0) | 2021.02.12 |
---|---|
파이썬 How do you get a query string on Flask? (0) | 2021.02.12 |
파이썬 목록 색인이 있으면 X를 수행하십시오. (0) | 2021.02.12 |
파이썬 C ++에서 더 간단한 언어 (Python, Lua 등) 로의 변환기? (0) | 2021.02.11 |
파이썬 Reading a binary .dat file as an array (0) | 2021.02.11 |
댓글