我正在寻找一种简单整洁的方法来检查变量是否为正,其中该变量可以是float或numpy.timedelta64
或datetime.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/