Я пытаюсь сохранить около 3000 массивов numpy, используя формат данных HDF5. Массивы различаются по длине от 5306 до 121999 np.float64.
Я получаю ошибку Object dtype dtype('O') has no native HDF5 equivalent
, так как из-за нерегулярного характера данных numpy использует общий класс объектов.
Моя идея заключалась в том, чтобы дополнить все массивы длиной 121999 и сохранить размеры в другом наборе данных.
Однако это кажется довольно неэффективным в космосе, есть ли лучший способ?
РЕДАКТИРОВАТЬ: Чтобы уточнить, я хочу хранить 3126 массивов dtype = np.float64
. Я храню их в массиве list
, и когда h5py выполняет подпрограмму, он преобразуется в массив dtype = object
, поскольку они имеют разную длину. Чтобы проиллюстрировать это:
a = np.array([0.1,0.2,0.3],dtype=np.float64)
b = np.array([0.1,0.2,0.3,0.4,0.5],dtype=np.float64)
c = np.array([0.1,0.2],dtype=np.float64)
arrs = np.array([a,b,c]) # This is performed inside the h5py call
print(arrs.dtype)
>>> object
print(arrs[0].dtype)
>>> float64
arrs
— это массив объектов, которыйh5py
не может сохранить. Вы должны сохранитьa
,b
,c
как отдельныеdatasets
. Эти массивы будут элементамиdatagroup
, и вы сможете использовать интерфейс словаря с группами. - person hpaulj   schedule 13.05.2016