4 Stimmen

Wie behandelt Python matplotlib binäre Daten?

Ich versuche, matplotlib zu verwenden, um binäre Daten aus einer Datei zu lesen:

import matplotlib.pyplot as plt

try:
    f = open(file, 'rb')
    data = f.read(100)
    plt.plot(data)
except Exception as e:
    print(e)
finally:
    f.close()

Aber ich habe den folgenden Fehler erhalten:

'ascii' codec can't decode byte 0xfd in position 0: ordinal not in range(128)

Die Datei, die ich lese, besteht aus binären Daten. Wie behandelt matplotlib binäre Daten? Sind es vorzeichenlose oder vorzeichenbehaftete 1-Byte-Daten?

5voto

pelson Punkte 19836

Wie bereits in den Kommentaren zu Ihrer Frage darauf hingewiesen wurde, sind die Bytes, die Sie an das Diagramm übergeben, mehrdeutig. Sie müssen diese Bytes in ein Numpy-Array (oder eine Liste/Tupel) umwandeln, bevor Sie es an matplotlib übergeben.

Ein einfaches Beispiel zur Veranschaulichung:

import numpy as np
import matplotlib.pyplot as plt

orig_array = np.arange(10, dtype=np.uint8)
with open('my_binary_data.dat', 'wb') as write_fh:
    write_fh.write(orig_array)

with open('my_binary_data.dat', 'rb') as fh:
    loaded_array = np.frombuffer(fh.read(), dtype=np.uint8)

print loaded_array
plt.plot(loaded_array)
plt.show()

Ich bin im Begriff, Ihnen anhand der Verwendung von numpy.frombuffer mit den Bytes, die Sie in Ihre "Daten" Variable einlesen, zu demonstrieren, aber eigentlich würden Sie einfach numpy.fromfile verwenden, so dass die Ladezeile wie folgt aussieht:

loaded_array = np.fromfile(fh, dtype=np.uint8)

HTH

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X