17

PyTablesを使用してHDF5ファイルにnumpy多次元配列を配置するにはどうすればよいですか?

私の知る限り、配列フィールドをpytablesテーブルに配置することはできません。

また、この配列に関する情報を保存して、数学的な計算を実行できるようにする必要があります。

助言がありますか?

4

1 に答える 1

33

もっと簡単な方法があるかもしれませんが、私が知る限り、これはあなたがそれを行う方法です:

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)
于 2012-01-12T22:45:58.857 に答える