いくつかのhdf5
ファイルがあり、それぞれが同じ構造を持っています。pytable
どうにかしてファイルをマージして、そのうちの1つを作成したいと思いhdf5
ます。
つまり、ファイル 1 の配列のサイズが x で、ファイル 2 の配列のサイズが y の場合、結果の配列pytable
のサイズは x+y になり、最初にファイル 1 のすべてのエントリが含まれ、次にファイル 2 のすべてのエントリが含まれます。
これを行う方法は、使用しているデータ型によって若干異なります。配列と CArray は静的なサイズであるため、データ領域を事前に割り当てる必要があります。したがって、次のようなことを行います。
import tables as tb
file1 = tb.open_file('/path/to/file1', 'r')
file2 = tb.open_file('/path/to/file2', 'r')
file3 = tb.open_file('/path/to/file3', 'r')
x = file1.root.x
y = file2.root.y
z = file3.create_array('/', 'z', atom=x.atom, shape=(x.nrows + y.nrows,))
z[:x.nrows] = x[:]
z[x.nrows:] = y[:]
ただし、EArray と Table は拡張可能です。したがって、サイズを事前に割り当てる必要はなく、代わりに copy_node() と append() を使用できます。
import tables as tb
file1 = tb.open_file('/path/to/file1', 'r')
file2 = tb.open_file('/path/to/file2', 'r')
file3 = tb.open_file('/path/to/file3', 'r')
x = file1.root.x
y = file2.root.y
z = file1.copy_node('/', name='x', newparent=file3.root, newname='z')
z.append(y)