python3打不开python2形成的npy文件_python,修复损坏的npy文件. ValueError:新数组的总大小必须保持不变...

我运行一个程序,每隔20秒将数据保存在一个npy文件中,但会覆盖旧文件,以更新文件.

昨天经过一天的数据收集后,程序崩溃了,因为有人在错误的时刻做了键盘中断的人为错误.

现在加载npy文件后,我收到错误消息

ValueError:新数组的总大小必须保持不变

我已经试过了

使用open(“test.npy”,“rb”)作为npy:

a = np.load(npy)

解决方案但错误仍然存​​在.

我认为正在发生的是npy文件中缺少行,但我不知道如何修复它. npy文件仍然具有MB应该具有的大小,因此保存了一些defenitely.

有谁知道如何修复我的文件并获取其中的数据?

否则我会放松一天的数据.

很感谢任何形式的帮助!

编辑:这里可以找到破碎的文件和一个好的例子,除了数字不同之外应该完全相同. http://perswww.kuleuven.be/~u0077049/

形状是(1024,3649)

dtype是dtype(‘float64’)

解决方法:

npy format is very simple.它以数据的ascii描述(数据类型,数组大小)开始,然后是平面二进制转储.标头数据总是16个字节的倍数,恰好是float64(8个字节)大小的倍数.

在此示例中,标头为80个字节.在你的情况下,你必须尝试.

import numpy as np

# write npy file

a = 10**np.array(np.linspace(-10, 10, 51), dtype=np.float64)

np.save('foo.npy', a)

# read back

b = np.fromfile('foo.npy', dtype=np.float64)

print(b[10:])

您必须使用reshape以正确的(Fortran)数组顺序进入它.

我简要地看了一下你的档案;问题似乎是该文件应该是29892688字节但是损坏的文件是29892609,即79字节太短.如果使用79个字节的零填充文件(或使用上述过程读取的数组),则可能会再次读取它.

标签:python,numpy

来源: https://codeday.me/bug/20190628/1311480.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值