4

我需要将 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: must be string or buffer, not int

谢谢!

4

2 回答 2

5

您可以使用以二进制形式保存的numpy.save()

于 2012-11-08T14:43:20.730 回答
2

numpy.savetext如果你想将它保存为 ascii, 你可以使用它。

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

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


既然你说你在第二行得到一个错误,这是一个错误,因为f.write需要一个字符串。你试图通过它 atupleints。你可以struct.pack用来解决这个问题:

f.write(struct.pack('2i',*array.shape))
于 2012-11-08T14:44:51.443 回答