Использование памяти Python массивов numpy

Я использую python для анализа некоторых больших файлов, и у меня возникают проблемы с памятью, поэтому я использую sys.getsizeof (), чтобы попытаться отследить использование, но его поведение с массивными массивами странное , Вот пример с картой альбедо, которую мне нужно открыть:

>>> 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 пикселей, увеличился с ~ 200 Мб до 80 байтов. Я хотел бы надеяться, что мои проблемы с памятью закончились и просто конвертировать все в массивы, но я чувствую, что это поведение, если оно истинно, каким-то образом нарушит некоторый закон теории информации или термодинамики, или что-то еще, так что я склонен полагать, что getsizeof () не работает с массивами numpy. Есть идеи?

138
задан EddyTheB 2 August 2012 в 19:19
поделиться