python – 将numpy数组的大小写入二进制文件

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

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

这是我的简单python代码:

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

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

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

但它也不起作用.

我正在添加它显示的错误:

Traceback(最近一次调用最后一次):
    file.write(V.shape [0])
TypeError:必须是字符串或缓冲区,而不是int

谢谢!

解决方法:

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

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

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

既然你说你在第二行遇到错误,那就是错误,因为f.write需要一个字符串.你试图将它传递给元组或整数.您可以使用struct.pack来解决此问题:

f.write(struct.pack('2i',*array.shape))
上一篇:python – 从字典中提取键/值对


下一篇:为什么Python中的元组可以反转但没有__reversed__?