有没有办法用C代码将多维C数组写成.npy格式,这样我们以后就可以在python numpy中读取数组了?

Is there a way to write a multidimensional C array to .npy format with C code, so that we could read the array in python numpy later?

我正在做一些科学计算,我使用 C 程序生成数据并使用 python 进行分析。我想将数组从 C 导出到 python.

到目前为止,我正在做的是将多维(多于 2)的 C 数组写入 csv 文件,然后从 python np.genfromtxt 读取它并使用.reshape 方法。我认为如果我能直接写一个.npy文件并调用np.load,那将是一个巨大的进步。 C 中是否有任何库可以执行此操作?

NPY文件格式是Numpy的内部文件格式。虽然像 this or this or even this, the file format is relatively simple and documented by Numpy here 这样的库很少(non-standard)。将来可能会更改,库可能不是最新的。

或者,更好的解决方案当然是 load/save 您的文件,使用 HDF5 standard. It is widely supported by many fast/HPC libraries and supported by Numpy too (see this related post 获取更多信息)。 HDF5 还为 HPC 应用程序提供更高级的功能,例如读取切片或并行 read/writes。