如何将 numpy 二维数组作为一种可以用C++读取的二进制格式存储在磁盘上

How to store numpy two dimensional array onto disk as a kind of binary format which can be read with C++

本文关键字:读取 C++ 二进制 格式 磁盘 存储 一种 二维数组 numpy      更新时间:2023-10-16

我有python二维numpy数组,我想将它们更改为可以用C++读取的二进制格式,如您所知,C++中的二维数组是一种带有两个指针的一维数组,用于定位元素。你能告诉我python中的哪个函数可以用来完成这项工作或任何其他解决方案吗?

这对于评论来说太长了,但可能不够完整,无法自行运行。 正如 Tom 在评论您的问题时提到的,使用一个在 python 和 C++ 中保存并加载到明确定义的格式(hdf5.mat(的库可能是最简单的解决方案。 如果您不想查找和设置这样的库,请继续阅读。

Numy 能够使用numpy.save保存数据(请参阅此内容(, 格式(此处描述(声明有一个标题,其中包含有关数据类型和数组形状数量的信息,后跟数据。 因此,除非你想编写一个功能齐全的解析器(你不想(,否则你应该确保python始终如一地将数据保存为float64(或任何你想要的类型(,以c顺序(fortran排序是另一种选择(。

然后,C++代码只需要检查数组数据类型是否float64,是否使用了正确的排序,以及数组的大小。 分配适当的内存量,您可以将文件中的字节数直接加载到分配的内存中。 要创建 2D 索引,您需要为分配内存中的每个"行"分配一个指针数组。

或者只是使用一个可以为您处理所有这些的库。