web-dev-qa-db-ja.com

Python:PyTablesにnumpy多次元配列を格納する方法は?

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

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

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

助言がありますか?

18
scripts

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

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.createCArrayf.create_carrayに名前が変更されました。 atomを指定せずに、配列を直接受け入れることもできます。

f.create_carray('/', 'somename', obj=x, filters=filters)
34
Joe Kington