13

を使用して HDF5 に NumPy 日時オブジェクトを格納するにはどうすればよいh5pyですか?

In [1]: import h5py

In [2]: import numpy as np

In [3]: f = h5py.File('foo.hdfs', 'w')

In [4]: d = f.create_dataset('data', shape=(2, 2), dtype=np.datetime64)
TypeError: No conversion path for dtype: dtype('<M8')
4

2 に答える 2

9

現在、h5py は時間タイプ ( FAQIssue )をサポートしていません。

NumPy の datetime64 は 8 バイトの長さです。したがって、回避策として'<i8'、int を hdf5 ファイルに格納するようにデータを表示し、np.datetime64取得時にそれを表示することができます。

import numpy as np
import h5py

arr = np.linspace(0, 10000, 4).astype('<i8').view('<M8[D]').reshape((2,2))
print(arr)
# [['1970-01-01' '1979-02-16']
#  ['1988-04-02' '1997-05-19']]
with h5py.File('/tmp/out.h5', "w") as f:
    dset = f.create_dataset('data', (2, 2), '<i8')
    dset[:,:] = arr.view('<i8')
with h5py.File('/tmp/out.h5', "r") as f:
    dset = f.get('data')
    print(dset.value.view('<M8[D]'))
    # [['1970-01-01' '1979-02-16']
    #  ['1988-04-02' '1997-05-19']]
于 2014-05-09T18:30:20.243 に答える