我正在寻找一种简单整洁的方法来检查变量是否为正,其中该变量可以是float或numpy.timedelta64datetime.timedelta

我显然尝试过x>0,但这不适用于timedelta(无论是numpy还是datetime

我找到的唯一解决方案是x/abs(x) > 0,我觉得它有点麻烦。 np.sign甚至都没有返回答案。

有更好的方法来检查吗?

编辑:
每当x.total_seconds()为浮点型时,使用x都会返回错误。使用x > np.timedelta(0)不适用于datetime.timedelta

最佳答案

您可以与“零时间增量”对象进行比较,然后使用try / except覆盖数字输入:

import numpy as np
from datetime import timedelta

def pos_check(x, zero_value=timedelta()):
    try:
        return x > zero_value
    except TypeError:
        return x > 0

py_td = timedelta(days=1)      # 1-day, regular Python
np_td = np.timedelta64(py_td)  # 1-day, NumPy

assert pos_check(1.5)
assert pos_check(py_td)
assert pos_check(np_td)

关于python - 确定x对于浮点数和时间增量是否均为正,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53484129/

10-12 18:52