h5py
загружает (наиболее) значения как numpy
массивов. Массив имеет атрибут shape
и dtype
.
Для массива, который я, случается, есть в моей IPython сессии, я могу получить эти атрибуты:
In [211]: X.shape,X.dtype
Out[211]: ((51, 13), dtype('float64'))
In [212]: X.size
Out[212]: 663
In [213]: X.size, X.itemsize
Out[213]: (663, 8)
In [214]: X.nbytes
Out[214]: 5304
Команда IPython whos
также дает мне эту информацию:
X ndarray 51x13: 663 elems, type `float64`, 5304 bytes
X
также использует некоторая память для хранения таких атрибутов, но большая часть использования памяти находится в буфере данных, который в этом случае составляет 5304 байта.
h5py
мочь добавить некоторую дополнительную информацию; Я должен проверить его документы. Но это основы numpy
.
В документах h5py я вижу, что DataSet имеет форму, размер и тип dtype. Я не вижу nbytes или itemsize. Возможно, вам придется это сделать.
Для небольшого файла примера, я получаю (в сеансе IPython)
In [262]: y
Out[262]: <HDF5 dataset "y": shape (10,), type "<i4">
In [265]: y1=f['y'][:]
И whos
записи:
y Dataset <HDF5 dataset "y": shape (10,), type "<i4">
y1 ndarray 10: 10 elems, type `int32`, 40 bytes
y1
является ndarray
со всеми атрибутами, которые я описал , y
, выгружено, не имеет nbytes
, но это может быть рассчитано по форме и типу.
У меня нет hdf5 под рукой ... какой тип 'a'? – tdelaney
Добавьте пару подсказок до и после предложения 'with' и используйте обычные системные инструменты для проверки использования памяти процесса. – tdelaney
Использование 'list' в заголовке вводит в заблуждение. Это «массив». – hpaulj