关于python:将numpy数组及其大小写入二进制文件

您所在的位置:网站首页 斗鱼一千多万贡献是多少钱 关于python:将numpy数组及其大小写入二进制文件

关于python:将numpy数组及其大小写入二进制文件

#关于python:将numpy数组及其大小写入二进制文件 | 来源: 网络整理| 查看: 265

我需要将2D numpy数组写入文件,包括其尺寸,以便可以从C程序读取它并创建相应的数组。

我已经编写了一些简单的代码来保存数组,并且可以从C中读取它,但是如果我先尝试写数组的大小,它总是会给我一个错误。

这是我简单的python代码:

12341 file = open("V.bin","wb") 2 file.write(V.shape) 3 file.write(V) 4 file.close()

第二行给出了错误,我也尝试过:

123n1, n2 = V.shape file.write(n1) file.write(n2)

但是它也不起作用。

我正在添加显示的错误:

回溯(最近通话最近): file.write(V.shape [0]) TypeError:必须是字符串或缓冲区,而不是int

谢谢!

相关讨论 我很确定file.write()需要一个字符串或缓冲区。 v.shape是一个元组,将其作为参数传递将引发TypeError。

您可以使用numpy.save()保存为二进制文件。

相关讨论 这是.npy规范(github.com/numpy/numpy/blob/master/doc/neps/npy-format.txt)??,因此可以在调用save()后从C代码解释数据。 但是我需要首先从C程序中读取行数和列数。它不会保存该信息,对吗? 哦,没看到。无论如何,谢谢,但是我已经用另一种方式解决了它。

如果要将其另存为ascii,则可以使用numpy.savetext。

或者(因为它看起来像是在处理二进制数据),如果要保存原始数据流,则可以使用ndarray.tostring获取可直接转储到文件的字节字符串。铅>

此方法的优点是您可以创建自己的文件格式。缺点是您需要创建一个字符串才能将其实际写入文件。

并且由于您说第二行出现错误,所以这是一个错误,因为f.write需要一个字符串。您正在尝试将其传递给tuple或int。您可以使用struct.pack解决此问题:

1f.write(struct.pack('2i',*array.shape))


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3