PyTablesを使用してnumpy多次元配列をHDF5ファイルに配置するにはどうすればよいですか?Python:PyTablesにnumpy多次元配列を格納する方法は?
私はpytablesテーブルに配列フィールドを置くことはできません。
また、この配列に関する情報を保存し、数学的計算を行う必要があります。
提案がありますか?
PyTablesを使用してnumpy多次元配列をHDF5ファイルに配置するにはどうすればよいですか?Python:PyTablesに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.openFile('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.openFile('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
に変更されました。また、あなただけのストレートNDアレイアップの多くを保存している場合、あなたは `h5py`の代わりに、` pytables`との方がいいでしょう、正直なところ、
f.create_carray('/', 'somename', obj=x, filters=filters)
これは完璧に働いてくれてありがとう!! – scripts
これは、http://pytables.github.io/usersguide/tutorials.htmlの「新しい配列オブジェクトの作成」の節で説明しているように、ファイルオブジェクトのcreate_arrayメソッドを使用することで、もっと簡単に行うことができることに注意してください。 –
を指定せずに、直接配列を受け入れることができます。これは 'f.create_dataset( 'name'、data = x)'と同じくらい単純です。ここで 'x'はあなたのnumpy配列で、' f'は開いているhdfファイルです。 'pytables'で同じことをすることは可能ですが、かなり困難です。 –
Joe、+1。私はほぼ同じコメントを投稿しようとしていました。 –
私はそれを考えましたが、pytablesには配列の計算を直接行うためのいくつかの機能(tables.expr)がありますが、h5pyでそれを持つことはできますか? – scripts