Was ist der richtige Weg um ganzzahlige Daten in datetime64 in numpy zu konvertieren? Ich habe es versucht:
%Vor%, aber eine falsche Konvertierung erhalten. Wie wäre es, sie korrekt als numpy.datetime64-Objekte mit numpy.loadtxt (sie kommen aus einer CSV-Datei) zu lesen?
Seltsamerweise funktioniert das: numpy.datetime64(a.astype("S8").tolist())
, während dies nicht gilt: numpy.datetime64(a.astype("S8"))
. Die erste Methode ist immer noch etwas weniger verschachtelt als: numpy.array([numpy.datetime64(str(i)) for i in a])
. Ich fragte warum in diese Frage .
Ihr Problem ist, dass datetime64
eine Zeichenkette im Format yyyy-mm-dd
erwartet, während die Typkonvertierung Zeichenketten im Format yyyymmdd
erzeugt. Ich würde so etwas vorschlagen:
Aber es funktioniert nicht für mich (ich habe numpy 1.6.1), es schlägt mit der Nachricht "NotImplementedError: Nicht für diesen Typ implementiert". Wenn dies nicht in 1.7 implementiert ist, kann ich nur eine reine Python-Lösung vorschlagen:
%Vor%... oder Ihre Eingabe vorverarbeiten, um die Daten im erwarteten Format zu übermitteln.
Bearbeiten: Ich kann auch eine alternative Lösung anbieten, die vectorize
verwendet, aber ich weiß nicht genau, wie es funktioniert, also weiß ich nicht, was schief läuft:
Aus irgendeinem Grund ignoriert es otypes
und gibt |S4
statt |S10
aus. Entschuldigung, ich kann nicht mehr helfen, aber dies sollte einen Ausgangspunkt für die Suche nach anderen Lösungen bieten.
Update: Dank OP-Feedback habe ich mir eine neue Möglichkeit einfallen lassen. Dies sollte wie erwartet funktionieren:
%Vor% Seltsam, in diesem Fall funktioniert datetime64
gut mit oder ohne Bindestriche ...