Python 如何将'numpy.datetime64'列表转换为'matplotlib.dates'?

Python 如何将'numpy.datetime64'列表转换为'matplotlib.dates'?,python,numpy,matplotlib,Python,Numpy,Matplotlib,这是我的简单目标: [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

这是我的简单目标:

[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')]

不是使用循环,而是一个一个地转换空列表,有没有快捷方式?谢谢

我最喜欢的解决方案是一个似乎隐藏在该线程中的解决方案: ,即使用
tolist()
。由于
tolist()
根据数组类型返回不同的类型,因此需要转换到
ms
以获取
datetime
对象
datetime
对象可以直接使用matplotlib打印,也可以对其应用
matplotlib.dates.date2num()

因此,如果
a
是如上所述的numpy数组

x = a.astype("M8[ms]").tolist()
生成日期时间对象的列表

完整示例:

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()

嗯,列出理解/生成器表达式?但他们仍然一个接一个地处理项目。这有帮助吗?映射函数??