pythonnumpy生成二进制流_写numpy的数组,其大小以二进制文件

I need to write a 2D numpy array to a file, including its dimensions so I can read it from a C++ program and create the corresponding array.

I have written some simple code that saves the array and it can be read from C++, but if I try to write the array's size first it always gives me an error.

Here's my simple python code:

1 file = open("V.bin","wb")

2 file.write(V.shape)

3 file.write(V)

4 file.close()

The second line gives the error, I've also tried:

n1, n2 = V.shape

file.write(n1)

file.write(n2)

But it doesn't work either.

I'm adding the error it shows:

Traceback (most recent call last):

file.write(V.shape[0])

TypeError: must be string or buffer, not int

Thanks!

解决方案

You can use numpy.savetext if you want to save it as ascii.

Alternatively (since it looks like you're dealing with binary data), if you want to save the raw data stream, you could use ndarray.tostring to get a string of bytes that you can dump to the file directly.

The advantage of this approach is that you can create your own file format. The downside is that you need to create a string in order to actually write it to the file.

And since you say that you're getting an error on the second line, it's an error because f.write expects a string. You're trying to pass it a tuple or ints. You could use struct.pack to solve this problem:

f.write(struct.pack('2i',*array.shape))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值