PyTablesを使用してHDF5ファイルにnumpy多次元配列を配置するにはどうすればよいですか?
私の知る限り、pytablesテーブルに配列フィールドを配置することはできません。
また、この配列に関する情報を保存して、数学的な計算を実行できるようにする必要があります。
助言がありますか?
もっと簡単な方法があるかもしれませんが、私が知る限り、これはあなたがそれを行う方法です:
import numpy as np
import tables
# Generate some data
x = np.random.random((100,100,100))
# Store "x" in a chunked array...
f = tables.open_file('test.hdf', 'w')
atom = tables.Atom.from_dtype(x.dtype)
ds = f.createCArray(f.root, 'somename', atom, x.shape)
ds[:] = x
f.close()
使用する圧縮を指定する場合は、tables.Filters
を参照してください。例えば。
import numpy as np
import tables
# Generate some data
x = np.random.random((100,100,100))
# Store "x" in a chunked array with level 5 BLOSC compression...
f = tables.open_file('test.hdf', 'w')
atom = tables.Atom.from_dtype(x.dtype)
filters = tables.Filters(complib='blosc', complevel=5)
ds = f.createCArray(f.root, 'somename', atom, x.shape, filters=filters)
ds[:] = x
f.close()
これにはおそらくもっと簡単な方法があります...私は長い間、テーブルのようなデータ以外にpytables
を使用していません。
注: pytables 3.0では、f.createCArray
はf.create_carray
に名前が変更されました。 atom
を指定せずに、配列を直接受け入れることもできます。
f.create_carray('/', 'somename', obj=x, filters=filters)