簡體   English   中英

python,修復損壞的npy文件。 ValueError:新數組的總大小必須保持不變

[英]python, fix broken npy file. ValueError: total size of new array must be unchanged

我運行一個程序,每隔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格式非常簡單 它以數據的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個字節的零填充文件(或使用上述過程讀取的數組),則可能會再次讀取它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM