Согласно http://docs.h5py.org/en/stable/faq.html#what -данные-поддерживаемые типы
h5py
поддерживает комплексный тип d, представляя HDF5 struc
.
Ошибка указывает diff.dtype
это dtype([('real', '<f4'), ('imag', '<f4')])
. Я не знаю, является ли это результатом вашего np.array(data)
преобразования или что-то другое в том, как данные хранятся в файле.
diff = data[:]
, возможно, стоит попробовать, так как это предпочтительный синтаксис для загрузка массива из набора данных.
Но если diff
является этим структурированным массивом, вы можете создать сложный dtype с помощью:
In [303]: arr2 = np.ones((3,), np.dtype([('real','f'),('imag','f')]))
In [304]: arr2
Out[304]:
array([(1., 1.), (1., 1.), (1., 1.)],
dtype=[('real', '<f4'), ('imag', '<f4')])
In [305]: arr3 = arr2['real']+1j*arr2['imag']
In [306]: arr3
Out[306]: array([1.+1.j, 1.+1.j, 1.+1.j], dtype=complex64)
тестирования в abs
:
In [307]: np.abs(arr2)
---------------------------------------------------------------------------
UFuncTypeError Traceback (most recent call last)
<ipython-input-307-333e28818b26> in <module>
----> 1 np.abs(arr2)
UFuncTypeError: ufunc 'absolute' did not contain a loop with signature matching types dtype([('real', '<f4'), ('imag', '<f4')]) -> dtype([('real', '<f4'), ('imag', '<f4')])
In [308]: np.abs(arr3)
Out[308]: array([1.4142135, 1.4142135, 1.4142135], dtype=float32)