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)