gpt4 book ai didi

python,修复损坏的 npy 文件。值错误 : total size of new array must be unchanged

转载 作者:太空宇宙 更新时间:2023-11-03 10:58:27 26 4
gpt4 key购买 nike

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

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

现在加载 npy 文件后我收到错误消息ValueError:新数组的总大小必须不变

我已经试过了

以 open("test.npy", "rb") 作为 npy: a = np.load(npy)

解决了,但错误依旧。

我认为是 npy 文件中缺少行,但我不知道如何修复它。 npy 文件仍然有它应该有的大小(以 MB 为单位),所以肯定有一些东西被保存了。

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

否则我会丢失一天的数据。

非常感谢任何帮助!

编辑:在这里可以找到损坏的文件和一个好的文件的示例,除了数字不同外,它们应该完全相同。 http://perswww.kuleuven.be/~u0077049/

形状是 (1024, 3649)dtype 是 dtype('float64')

最佳答案

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

在此示例中, header 为 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,修复损坏的 npy 文件。值错误 : total size of new array must be unchanged,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37196788/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com