Как пакетно выбирать и вычислять массивы в Numpy?

Как (1) пакетно выбрать все массивы в файле hdf5, затем (2) применить вычисления к этим массивам и, наконец, (3) пакетно создать новые массивы в другом файле hdf5?

Например:

import numpy
import tables

file = openFile('file1',"r")

array1 = file.root.array1
array1_cal = (array1 <= 1)
newfile.createArray('/','array1_cal',array1_cal)

array2 = file.root.array2
array2_cal = (array2 <= 1)
newfile.createArray('/','array2_cal',array2_cal)

У меня есть более 100 массивов в одном файле hdf5 и нескольких файлах hdf5, как я могу их обработать в пакетном режиме? Большое спасибо.


person l.z.lz    schedule 10.05.2012    source источник
comment
Какова структура вашего файла HDF? Например, все ли массивы свисают с корня? Вы хотите, чтобы эта структура была воспроизведена в новом файле?   -  person dtlussier    schedule 10.05.2012


Ответы (2)


С помощью PyTables вы можете использовать функцию walkNodes для рекурсивного перебора узлов. Вот пример:

# Recursively print all the nodes hanging from '/detector'.
print "Nodes hanging from group '/detector':"
for node in h5file.walkNodes('/detector', classname='EArray'):
    data = node[:]
    // do some calculation 
    // store new array in second file 
person Ümit    schedule 10.05.2012

Используйте h5py, интерфейс Python для HDF5. h5py позволяет использовать файлы, группы и наборы данных HDF5, используя традиционные метафоры Python и NumPy.

см. http://code.google.com/p/h5py/ и http://alfven.org/wp/hdf5-for-python/

person PA.    schedule 10.05.2012