首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将numpy数组及其大小写入二进制文件

将numpy数组及其大小写入二进制文件
EN

Stack Overflow用户
提问于 2012-11-08 22:38:31
回答 2查看 4.2K关注 0票数 4

我需要将一个二维numpy数组写到一个文件中,包括它的维数,这样我就可以从C++程序中读取它并创建相应的数组。

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

下面是我的简单python代码:

代码语言:javascript
复制
1 file = open("V.bin","wb")
2 file.write(V.shape)
3 file.write(V)
4 file.close()

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

代码语言:javascript
复制
n1, n2 = V.shape
file.write(n1)
file.write(n2)

但它也不起作用。

我添加了它显示的错误:

回溯(最近一次调用):file.write(V.shape) TypeError:必须是字符串或缓冲区,而不是整型

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-08 22:44:51

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

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

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

既然你说你在第二行得到了一个错误,那么这就是一个错误,因为f.write需要一个字符串。您正在尝试向其传递tupleint%s。您可以使用struct.pack来解决此问题:

代码语言:javascript
复制
f.write(struct.pack('2i',*array.shape))
票数 2
EN

Stack Overflow用户

发布于 2012-11-08 22:43:21

您可以使用numpy.save(),它以二进制格式保存。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13291118

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档