【发布时间】:2011-05-07 04:59:36
【问题描述】:
当我使用 NumPy 时,我以原生格式 *.npy 存储它的数据。它非常快,给了我一些好处,比如这个
- 我可以从 C 代码中读取 *.npy 作为 简单的二进制数据(我的意思是 *.npy 是 与 C 结构二进制兼容)
现在我正在处理 HDF5(此时为 PyTables)。正如我在教程中所读到的,他们使用 NumPy 序列化程序来存储 NumPy 数据,所以我可以从 C 中读取这些数据,就像从简单的 *.npy 文件中一样?
HDF5 的 numpy 是否也与 C 结构二进制兼容?
更新:
我有 matlab 客户端从 hdf5 读取,但不想从 C++ 读取 hdf5,因为从 *.npy 读取二进制数据要快几倍,所以我真的需要从 C++ 读取 hdf5(二进制兼容性) 所以我已经在使用两种方式来传输数据 - *.npy(从 C++ 中读取字节,从 Python 本地读取)和 hdf5(从 Matlab 访问) 如果可能的话,想使用唯一的一种方法 - hdf5,但要做到这一点,我必须找到一种方法使 hdf5 与 C++ 结构二进制兼容,请帮助,如果有某种方法可以关闭 hdf5 中的压缩或其他使 hdf5 与 C++ 结构二进制兼容的东西 - 告诉我在哪里可以读到它...
【问题讨论】:
-
您是说您已经在 C++ 中实现了从 hdf5 文件中读取的代码,并且您发现它比从 .npy 文件中读取要慢得多?另外,我相当确定 matlab 可以读取原始二进制文件,所以如果这是您使用 hdf5 的唯一原因,也许您应该更仔细地研究将 .npy 文件读入 matlab。
-
不,我正在从 C++ 中读取 *.npy 作为二进制数据,并想用 hdf5 来做这个技巧。从 MATLAB 中读取 *.npy 似乎很成问题
-
HDF5默认没有压缩。
标签: python c numpy hdf5 pytables