我需要将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))