Ottenere valori zero sbagliati con ninpy from fle quando leggono i file binari
Domanda
Sto cercando di leggere un file binario con Python.Questo è il codice che uso:
fb = open(Bin_File, "r")
a = numpy.fromfile(fb, dtype=numpy.float32)
.
Tuttavia, ottengo zero valori alla fine dell'array.Ad esempio, per un caso in cui nrows=296
e ncol=439
e come risultato, len(a)=296*439
, ottengo valori zero per a[-922:]
.So che questi valori dovrebbero essere Nodata (-9999 in questo esempio) da un pezzo di codice affidabile in R. Qualcuno sa per cui ottengo questi zeri non-sense?
P.S: Non sono sicuro che sia correlato su no, ma len(a)
è nrows*ncols+2
!Devo sbarazzarmi di questi due usando a = a[0:-2]
in modo che quando li rimodellai in righe e colonne usando a_reshape = a.reshape(nrows, ncols)
non ottengo un errore.
Soluzione
Quando si apre un file per la lettura come binario, è necessario utilizzare la modalità "rb"
anziché "r"
.
Ecco alcuni sfondo da Docs .Sulle macchine Linux non hai bisogno del "b"
ma non si farà male.Sulle macchine Windows è necessario utilizzare "rb"
per i file binari.