给出一个numpy数组,我想测试它是datetime64还是普通的数字数组。我在接受两个选项的某些绘图函数中使用了此函数,但是我无法在datetime64上执行np.isnan
或np.isinf
,也无法在数值数组上执行np.isnat
,所以我需要知道哪个是哪个。
问题是,根据原始数组的创建方式,我得到了不同的答案。
>>> 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
到目前为止我能想到的最好的是:
>>> str(x.dtype).startswith('datetime64')
True
>>> str(y.dtype).startswith('datetime64')
True
这是最佳选择,还是有更好的方法?
尝试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