Как вы хотите это сделать, это немного зависит от типа данных, который у вас есть. Массивы и CArrays имеют статический размер, поэтому вам необходимо предварительно распределить пространство данных. Таким образом, вы бы сделали примерно следующее:
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[:]
Однако EArrays and Tables можно расширять. Таким образом, вам не нужно предварительно распределять размер и вместо этого использовать 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)
Это может быть очевидно, но я не понимаю, что делают последние две строки. Предполагается ли, что это объединенный выходной файл? Эти две линии делают то же самое? Возможно ли уточнить имена и определения переменных здесь? – aarslan
Файл, который нужно записать, должен быть открыт в режиме добавления (или записи). Поэтому используйте '' a'' вместо '' r'' при открытии 'file3'. – 153957
для того, чтобы этот пример работал, мне также пришлось изменить окончательную строку на: 'z.append (y [:])' – user3197748