Python:如何在PyTables中存储一个Numpy多维数组?

发布于 2021-01-29 18:41:29

如何使用PyTables将numpy多维数组放入HDF5文件中?

据我所知,我不能将数组字段放在pytables表中。

我还需要存储有关此数组的一些信息,并能够对其进行数学计算。

有什么建议?

关注者
0
被浏览
139
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    可能有一种更简单的方法,但是据我所知,这就是您要做的事情:

    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.createCArray已重命名为f.create_carray。它也可以直接接受数组,而无需指定atom

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


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看