Nehmen wir an, ich habe ein Byte-Objekt, das einige Daten darstellt, und ich möchte es in eine numpy
Array über np.genfromtxt
konvertieren. Ich habe Probleme zu verstehen, wie ich in diesem Fall mit Strings umgehen soll. Beginnen wir mit dem Folgenden:Verständnis NumPy Interpretation von Zeichenfolge Datentypen
from io import BytesIO
import numpy as np
text = b'test, 5, 1.2'
types = ['str', 'i4', 'f4']
np.genfromtxt(BytesIO(text), delimiter = ',', dtype = types)
Dies funktioniert nicht. Es wirft
TypeError: data type not understood
Wenn ich types
so ändern, dass types = ['c', 'i4', 'f4']
Dann wird der numpy
Aufruf gibt
array((b't', 5, 1.2000000476837158),
dtype=[('f0', 'S1'), ('f1', '<i4'), ('f2', '<f4')])
So funktioniert es, aber ich bin nur den ersten Buchstaben der Zeichenfolge bekommen, offensichtlich.
Wenn ich c8
oder c16
für die dtype von test
, dann bekomme ich
array(((nan+0j), 5, 1.2000000476837158),
dtype=[('f0', '<c8'), ('f1', '<i4'), ('f2', '<f4')])
den Müll ist. Ich habe auch versucht, a
und U
, keinen Erfolg. Wie in der Welt bekomme ich genfromtxt
, um Elemente als String zu erkennen und zu speichern?
Edit: Ich nehme Teil des USGABE ist, dass dies ein Objekt bytes
ist. Allerdings, wenn ich stattdessen eine normale Zeichenfolge als text
verwenden, und verwenden Sie StringIO
statt BytesIO
, dann wirft genfromtxt
einen Fehler:
TypeError: Can't convert
Bytes object to str implicitly
Haben geben Sie eine Länge mit 'a' – user2357112
@ user2357112 No ... Danke ... die Lösung ist immer zu einfach – Anonymous