2017-09-23 1 views
0

Hier ist mein einfaches Objekt:Wie konvertiert man die Liste von `numpy.datetime64` in` matplotlib.dates`?

[numpy.datetime64('2017-01-03T00:00:00.000000000'), 
numpy.datetime64('2017-01-04T00:00:00.000000000'), 
numpy.datetime64('2017-01-05T00:00:00.000000000'), 
numpy.datetime64('2017-01-06T00:00:00.000000000'), 
numpy.datetime64('2017-01-09T00:00:00.000000000'), 
numpy.datetime64('2017-01-10T00:00:00.000000000'), 
numpy.datetime64('2017-01-11T00:00:00.000000000'), 
numpy.datetime64('2017-01-12T00:00:00.000000000'), 
numpy.datetime64('2017-01-13T00:00:00.000000000'), 
numpy.datetime64('2017-01-16T00:00:00.000000000'), 
numpy.datetime64('2017-01-17T00:00:00.000000000'), 
numpy.datetime64('2017-01-18T00:00:00.000000000'), 
numpy.datetime64('2017-01-19T00:00:00.000000000'), 
numpy.datetime64('2017-01-20T00:00:00.000000000'), 
numpy.datetime64('2017-01-23T00:00:00.000000000'), 
numpy.datetime64('2017-01-24T00:00:00.000000000'), 
numpy.datetime64('2017-01-25T00:00:00.000000000'), 
numpy.datetime64('2017-01-26T00:00:00.000000000'), 
numpy.datetime64('2017-01-27T00:00:00.000000000'), 
numpy.datetime64('2017-02-01T00:00:00.000000000')] 

stattdessen eine Schleife eine leere Liste eins nach dem anderen der Verwendung konvertieren, ist es Abkürzungen für das? Vielen Dank.

+1

Hmm, Listenkomprehensionen/Generator Ausdrücke? Aber sie verarbeiten immer noch Stück für Stück. – user3159253

+1

https://stackoverflow.com/questions/34843513/python-matplotlib-dates-date2num-converting-numpy-array-to-matplotlib-datetimes Hilft das? –

+1

Karte eine Funktion ?? – wwii

Antwort

1

Meine Lieblingslösung hier wäre eine, die in diesem Thread ein wenig versteckt scheint: Converting between datetime, Timestamp and datetime64, die tolist() zu verwenden ist. Da tolist() je nach Array-Typ unterschiedliche Typen zurückgibt, ist eine Konvertierung in ms erforderlich, um datetime Objekte zu erhalten. datetime Objekte können direkt mit Matplotlib gezeichnet werden, oder man kann matplotlib.dates.date2num() auf ihnen anwenden. So

wenn a ist die numpy Array wie oben,

x = a.astype("M8[ms]").tolist() 

Ergebnisse in einer Liste von Datetime-Objekten.

Komplettes Beispiel:

import numpy as np 
import matplotlib.pyplot as plt 
from datetime import datetime 
import matplotlib.dates as mdates 

a = np.array([np.datetime64('2017-01-03T00:00:00.000000000'), 
    np.datetime64('2017-01-04T00:00:00.000000000'), 
    np.datetime64('2017-01-05T00:00:00.000000000'), 
    np.datetime64('2017-01-06T00:00:00.000000000'), 
    np.datetime64('2017-01-09T00:00:00.000000000'), 
    np.datetime64('2017-01-10T00:00:00.000000000'), 
    np.datetime64('2017-01-11T00:00:00.000000000'), 
    np.datetime64('2017-01-12T00:00:00.000000000'), 
    np.datetime64('2017-01-13T00:00:00.000000000'), 
    np.datetime64('2017-01-16T00:00:00.000000000'), 
    np.datetime64('2017-01-17T00:00:00.000000000'), 
    np.datetime64('2017-01-18T00:00:00.000000000'), 
    np.datetime64('2017-01-19T00:00:00.000000000'), 
    np.datetime64('2017-01-20T00:00:00.000000000'), 
    np.datetime64('2017-01-23T00:00:00.000000000'), 
    np.datetime64('2017-01-24T00:00:00.000000000'), 
    np.datetime64('2017-01-25T00:00:00.000000000'), 
    np.datetime64('2017-01-26T00:00:00.000000000'), 
    np.datetime64('2017-01-27T00:00:00.000000000'), 
    np.datetime64('2017-02-01T00:00:00.000000000')]) 

x = a.astype("M8[ms]").tolist() 
y = np.random.rand(len(a)) 

plt.plot(x, y, color="limegreen") 

plt.show() 
Verwandte Themen