У меня нет проблем с записью / извлечением <u4
и np.uint32
:
In [14]: import h5py
In [15]: f=h5py.File('u4.h5','w')
In [16]: ds = f.create_dataset('data', dtype='<u4', shape=(10,))
In [17]: ds
Out[17]: <HDF5 dataset "data": shape (10,), type "<u4">
In [18]: ds[:]
Out[18]: array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0], dtype=uint32)
In [19]: ds[:] = np.arange(-5,5)
In [20]: ds
Out[20]: <HDF5 dataset "data": shape (10,), type "<u4">
In [21]: ds[:]
Out[21]: array([0, 0, 0, 0, 0, 0, 1, 2, 3, 4], dtype=uint32)
In [22]: np.array(ds, dtype='uint32')
Out[22]: array([0, 0, 0, 0, 0, 0, 1, 2, 3, 4], dtype=uint32)
In [23]: f.close()
Возможно, вы превысили лимит памяти. Я получаю сообщение об ошибке памяти при попытке создать массив такого размера:
In [24]: np.zeros((27270, 16, 512, 128),np.uint32);
---------------------------------------------------------------------------
MemoryError Traceback (most recent call last)
<ipython-input-24-2cfe704044b6> in <module>
----> 1 np.zeros((27270, 16, 512, 128),np.uint32);
MemoryError: Unable to allocate 107. GiB for an array with shape (27270, 16, 512, 128) and data type uint32
Вы все еще можете загрузить фрагмент data
, например data[0:100]
.