Holen Sie sich Jahr, Monat oder Tag von numpy datetime64
Ich habe ein array von datetime64 Typ:
dates = np.datetime64(['2010-10-17', '2011-05-13', "2012-01-15"])
Gibt es einen besseren Weg als die Schleife durch jedes element nur zu erhalten, np.Reihe von Jahren:
years = f(dates)
#output:
array([2010, 2011, 2012], dtype=int8) #or dtype = string
Ich bin mit stabilen numpy version 1.6.2.
Kommentar zu dem Problem
Was meinen Sie, wenn Sie schreiben "f(Datum)". Was bedeutet "f()" zu tun?
InformationsquelleAutor der Frage enedene | 2012-11-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Als datetime ist nicht stabil in numpy würde ich pandas:
Pandas verwendet numpy datetime-intern, scheint aber zu vermeiden, den Mangel, dass numpy hat bis jetzt.
InformationsquelleAutor der Antwort bmu
Finde ich folgende tricks geben zwischen 2x und 4x Geschwindigkeit zu erhöhen, gegen den pandas oben beschriebenen Methode (d.h.
pd.DatetimeIndex(dates).year
etc.). Die Geschwindigkeit der[dt.year for dt in dates.astype(object)]
finde ich ähnlich wie die pandas-Methode. Auch diese tricks kann direkt angewendet werden, um ndarrays von beliebiger Form (2D, 3D etc).InformationsquelleAutor der Antwort Anon
Sollte es ein einfacher Weg, dies zu tun, aber, je nachdem, was Sie versuchen zu tun, der beste Weg sein könnte, um zu konvertieren, um eine regelmäßige Python datetime-Objekt:
Basierend auf den Kommentaren unten, das scheint zu funktionieren nur in Python 2.7.x nicht Python 3.x
InformationsquelleAutor der Antwort Nick
Wenn Sie ein upgrade auf numpy 1.7 (wo datetime ist immer noch gekennzeichnet als experimentelle) die folgenden arbeiten sollten.
InformationsquelleAutor der Antwort Daniel
Gibt es keine direkte Möglichkeit, es zu tun, aber leider noch nicht, aber es gibt ein paar indirekte Weise:
oder
beide inspiriert durch die Beispiele hier.
Sowohl der diese Arbeit für mich auf Numpy 1.6.1. Möglicherweise müssen Sie ein bisschen vorsichtiger sein mit der zweiten, da die repr() für die datetime64 vielleicht ein Bruchteil nach dem Dezimalpunkt.
InformationsquelleAutor der Antwort acjay
Mithilfe von numpy version 1.10.4 und pandas version 0.17.1,
Ich das bekommen, was Sie suchen:
InformationsquelleAutor der Antwort Steve Schulist
Anon ' s Antwort funktioniert großartig für mich, aber ich muss nur ändern Sie die Anweisung für
days
aus:
:
InformationsquelleAutor der Antwort user3648119
Andere Möglichkeit ist:
oder
funktioniert aber nur auf Skalare Werte, nicht nehmen, array
InformationsquelleAutor der Antwort Mark Sojka