我需要将一个二维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)但它也不起作用。
我添加了它显示的错误:
回溯(最近一次调用):file.write(V.shape) TypeError:必须是字符串或缓冲区,而不是整型
谢谢!
发布于 2012-11-08 22:44:51
如果你想将它保存为ascii,你可以使用numpy.savetext。
或者(因为它看起来像是在处理二进制数据),如果您想保存原始数据流,可以使用ndarray.tostring来获取一个字节字符串,您可以直接将其转储到文件中。
这种方法的优点是您可以创建自己的文件格式。缺点是,您需要创建一个字符串,以便实际将其写入文件。
既然你说你在第二行得到了一个错误,那么这就是一个错误,因为f.write需要一个字符串。您正在尝试向其传递tuple或int%s。您可以使用struct.pack来解决此问题:
f.write(struct.pack('2i',*array.shape))发布于 2012-11-08 22:43:21
您可以使用numpy.save(),它以二进制格式保存。
https://stackoverflow.com/questions/13291118
复制相似问题