如何使用PyTables將一個numpy多維數組放入HDF5文件中?Python:如何在PyTables中存儲一個numpy多維數組?
從我能告訴我不能把數組字段放在pytables表中。
我還需要存儲一些關於這個數組的信息,並且能夠對它進行數學計算。
有什麼建議嗎?
如何使用PyTables將一個numpy多維數組放入HDF5文件中?Python:如何在PyTables中存儲一個numpy多維數組?
從我能告訴我不能把數組字段放在pytables表中。
我還需要存儲一些關於這個數組的信息,並且能夠對它進行數學計算。
有什麼建議嗎?
有可能是一個更簡單的方法,但這是你如何去這樣做,因爲據我所知:
import numpy as np
import tables
# Generate some data
x = np.random.random((100,100,100))
# Store "x" in a chunked array...
f = tables.openFile('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.openFile('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
。它也可以直接接受陣列,而不指定,
f.create_carray('/', 'somename', obj=x, filters=filters)
謝謝它的工作完美無瑕! – scripts 2012-01-12 23:32:43
請注意,現在可以使用文件對象上的create_array方法更直接地完成此操作,如http://pytables.github.io/usersguide/tutorials.html中的'創建新的數組對象'部分所述。 – 2014-10-02 15:52:52
老實說,如果你存儲大量的只是直線上升ND數組,你用'h5py',而不是'pytables'更好。它和'f.create_dataset('name',data = x)'一樣簡單''其中'x'是你的numpy數組,'f'是開放的hdf文件。在'pytables'中做同樣的事情是可能的,但是相當困難。 – 2012-01-12 22:16:55
Joe,+1。我即將發表幾乎相同的評論。 – 2012-01-12 22:21:07
我想到了,但pytables有一些功能(tables.expr)直接在數組上進行計算,我可以用h5py做到嗎? – scripts 2012-01-12 22:22:25