Ich habe eine Binärdatei, die ich gelesen habe eine Reihe von einem Datentyp enthält:Wie lese ich bestimmte Felder aus Binärdateien mit numpy?
dt_particles = np.dtype([('id', np.int64), \
('x', np.float32), \
('y', np.float32), \
('z', np.float32), \
('vx', np.float32), \
('vy', np.float32), \
('vz', np.float32)])
ich mit der gesamten Palette von dt_particles
Elemente lesen können:
numpy.rec.fromfile(FILE_OBJ, dtype=dt_particles, shape=NUM_ELEMENTS)
Wie lese ich nur id
Feld aus der Binärdatei und andere Felder überspringen?
Ok, meine einzige Sorge war, dass ich große Datendateien benutze und ich wollte so viel unnötige Verarbeitung überspringen, wie ich konnte. Wenn numpy sowieso die ganze Datei liest, macht das keinen großen Unterschied. – hazrmard
Doing ein "lesen 8 Bytes", "suchen 24", wiederholen bis zum Ende der Datei, wird viel langsamer als das Lesen der Datei in 1028 Byte Chunks (oder größer) und die Verarbeitung dieser. Wenn Sie die Anzahl der Elemente begrenzen, muss nicht die gesamte Datei gelesen werden. aber irgendein Feld wird durch die Datei verteilt. – hpaulj