Лучший способ определить, является ли массив numpy datetime64? - PullRequest
0 голосов
/ 06 мая 2020

Учитывая массив numpy, я хотел бы проверить, является ли он datetime64 или просто массивом numeri c. Я использую это в некоторых функциях построения графиков, которые принимают оба варианта, однако я не могу сделать np.isnan или np.isinf на datetime64 и не могу сделать np.isnat на массивах numeri c, поэтому мне нужно знать который есть что.

Проблема в том, что я получаю разные ответы в зависимости от того, как был создан исходный массив.

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

Это лучший вариант или есть способ лучше?

1 Ответ

1 голос
/ 06 мая 2020

попробуйте функцию 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...