ill*_*ant 14 python numpy hdf5
我需要帮助才能做出决定.我需要在我的应用程序中传输一些数据,并且必须在这三种技术之间做出选择.我已经阅读了所有技术(教程,文档),但仍然无法决定......
他们如何比较?
我需要支持元数据(接收文件的能力和没有任何附加信息/文件的读取),快速读/写操作,存储动态数据的能力将是一个加号(如Python对象)
我已经知道的事情:
PS:我需要传输的数据是NumPy/SciPy的"工作结果"(数组,复杂结构的数组等)
UPD:需要跨语言访问(C/C++/Python)
Dav*_*veP 12
你的问题似乎有点矛盾 - 你希望能够存储Python对象,但你也想要C/C++访问.我认为无论你选择哪种选择,你都需要将你喜欢的Python数据结构转换为更多静态结构,例如数组.
如果您需要跨语言访问,我建议使用HDF5,因为它是一种文件格式,专门设计为独立于语言,操作系统,系统架构(例如加载它可以自动在big-endian和little-endian之间进行转换并且专门针对进行科学/数值计算的用户.我对Google协议缓冲区了解不多,所以我不能对此做太多评论.
如果您决定使用HDF5,我还建议您使用h5py而不是pytables.这是因为pytables创建了具有大量额外pythonic元数据的HDF5文件,这使得在C/C++中读取数据更加困难,而h5py不会创建任何这些额外内容.您可以在这里找到一个比较,他们还提供了pytables常见问题解答的链接,以便他们了解这个问题,以便您可以决定哪个最适合您的需求.
另一种与HDF5非常相似的格式是NetCDF.这也有Python绑定,但是我没有使用这种格式的经验,因此除了指出它存在并且也广泛用于科学计算之外,我无法发表评论.