确定 numpy 数组是否为 datetime64 的最佳方法?

DSt*_*man 3 python arrays numpy

给定一个 numpy 数组,我想测试它是 datetime64 还是普通的数值数组。我在一些接受这两个选项的绘图函数中使用它,但是我不能对 datetime64 执行 a np.isnanor操作np.isinf,也不能np.isnat对数值数组执行 a 操作,所以我需要知道哪个是哪个。

问题是,根据原始数组的创建方式,我得到了不同的答案。

>>> import datetime
>>> import numpy as np

>>> x = np.datetime64('now', 'us')
>>> y = np.array([datetime.datetime.now()], dtype='datetime64[us]')

>>> isinstance(x, np.datetime64)
True
>>> isinstance(y, np.datetime64)
False
Run Code Online (Sandbox Code Playgroud)

到目前为止我想出的最好的办法是:

>>> str(x.dtype).startswith('datetime64')
True
>>> str(y.dtype).startswith('datetime64')
True
Run Code Online (Sandbox Code Playgroud)

这是最好的选择,还是有更好的方法?

Raj*_*hra 10

尝试np.issubdtype函数。

In [1]: import datetime

In [2]: import numpy as np

In [3]: x = np.datetime64('now', 'us')

In [4]: y = np.array([datetime.datetime.now()], dtype='datetime64[us]')

In [5]: np.issubdtype(x.dtype, np.datetime64)
Out[5]: True

In [6]: np.issubdtype(y.dtype, np.datetime64)
Out[6]: True
Run Code Online (Sandbox Code Playgroud)