【问题标题】:How to store numpy two dimensional array onto disk as a kind of binary format which can be read with C++如何将 numpy 二维数组作为一种可以用 C++ 读取的二进制格式存储到磁盘上
【发布时间】:2017-08-23 09:08:02
【问题描述】:

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

【问题讨论】:

  • 我的建议:使用库。我自己使用 HDF5,它具有 Python 和 C++ 的接口。也可以考虑相关的netCDF。我还遇到了this 更具实验性的库。

标签: python c++ numpy data-structures


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 2013-04-22
    • 1970-01-01
    • 2017-04-11
    • 1970-01-01
    • 2015-09-27
    • 1970-01-01
    • 2019-10-16
    • 1970-01-01
    • 2020-02-04
    相关资源
    最近更新 更多