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

问题描述 投票:0回答:1

给出一个numpy数组,我想测试它是datetime64还是普通的数字数组。我在接受两个选项的某些绘图函数中使用了此函数,但是我无法在datetime64上执行np.isnannp.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

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

python arrays numpy
1个回答
1
投票

尝试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
© www.soinside.com 2019 - 2024. All rights reserved.