【发布时间】:2018-11-26 15:15:19
【问题描述】:
我正在寻找一种简单而简洁的方法来检查变量是否为正,其中可以是浮点数、numpy.timedelta64 或 datetime.timedelta。
我显然尝试过x>0,但这不适用于timedeltas(numpy's 或datetime's)
我找到的唯一解决方案是x/abs(x) > 0,我觉得有点麻烦。甚至np.sign 也没有返回答案。
有没有更好的方法来检查这个?
编辑:
只要x 是浮点数,使用x.total_seconds() 就会返回错误。使用x > np.timedelta(0) 不适用于datetime.timedeltas。
【问题讨论】:
-
如果我使用
x.total_seconds(),只要x是float,就会出现错误 -
if isinstance(x, timedelta): return x.total_seconds() > 0 else: return x > 0
-
当然。但我需要为
np,timedelta64添加一个案例,为datetime.timedelta添加一个案例(因为它们是不同的类)和一个用于浮动的案例。如果这是最好的,我认为x/abs(x)>0仍然是一个更好的解决方案。 -
x==abs(x) 似乎两者都适用。不过,您可能需要检查零。
标签: python numpy datetime timedelta