Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:如何在PyTables中存储numpy多维数组?_Python_Arrays_Multidimensional Array_Numpy_Pytables - Fatal编程技术网

Python:如何在PyTables中存储numpy多维数组?

Python:如何在PyTables中存储numpy多维数组?,python,arrays,multidimensional-array,numpy,pytables,Python,Arrays,Multidimensional Array,Numpy,Pytables,如何使用PyTables将numpy多维数组放入HDF5文件中 据我所知,我不能将数组字段放入pytables表中 我还需要存储一些关于这个数组的信息,并能够对其进行数学计算 有什么建议吗 可能有一个更简单的方法,但据我所知,这就是你要做的: import numpy as np import tables # Generate some data x = np.random.random((100,100,100)) # Store "x" in a chunked array... f

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

据我所知,我不能将数组字段放入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.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()
如果要指定要使用的压缩,请查看
表。过滤器
。例如

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\u carray
。它还可以直接接受数组,而无需指定原子

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

老实说,如果您正在存储大量直接的ND阵列,那么最好使用
h5py
而不是
pytables
。它就像
f.create_dataset('name',data=x)
一样简单,其中
x
是您的numpy数组,
f
是打开的hdf文件。在
pytables
中做同样的事情是可能的,但要困难得多。我正要发表一篇几乎相同的评论。我想到了这一点,但是pytables有一些功能(tables.expr)可以直接在数组上进行计算,我可以用h5py吗?@脚本-而不是像
pytables
那样以压缩、加速的方式。(至少据我所知不是这样。)
pytables
还将为您提供许多很好的查询功能
h5py
更适合于磁盘阵列的直接存储和切片(i.m.o.也更像pythonic)。我不想过多地插入我自己的答案,但我对两者之间的权衡的想法如下:感谢Joe Kington提供的信息和我的案例,pytables更适合,因为它具有强大的查询技术,现在可以在文件对象上使用create_array方法更直接地完成这项工作,如
AttributeError:“File”对象没有属性“createCArray”