在使用numpy变量时,我很难理解这种奇怪的行为-
import numpy as np
from operator import lt,gt
val = lt(np.float64(0.8514),0) - gt(np.float(0.8514),0)此操作失败,并显示以下错误-
TypeErrorTraceback (most recent call last)
<ipython-input-37-ddc655dbbe89> in <module>()
1 from operator import lt,gt
----> 2 val = lt(np.float64(0.8514),0) - gt(np.float(0.8514),0)
TypeError: numpy boolean subtract, the `-` operator, is deprecated, use the bitwise_xor, the `^` operator, or the logical_xor function instead.这应该不会发生,因为lt和gt的输出是一个布尔变量。下面的代码片段都可以顺利地工作-
from operator import lt,gt
import numpy as np
val = True - False
val = lt(float(np.float64(0.8514)),0) - gt(float(np.float(0.8514)),0)我不明白当输入是numpy变量的时候有什么问题。上面的代码是用Python-2执行的。
发布于 2019-11-08 17:15:51
如错误消息所示,-运算符已弃用。只需使用^运算符进行逻辑运算即可。
import numpy as np
from operator import lt, gt
exp1 = lt(np.float64(0.8514), 0)
exp2 = gt(np.float64(0.8514), 0)
val = exp1 ^ exp2
print(val) # True如果我使用Python3,我没有得到错误信息,而且val = exp1 - exp2也可以工作。所以你可以考虑使用Python 3而不是Python 2。
如果由于某种原因不想执行逻辑操作,可以将exp1和exp2转换为float或int
import numpy as np
from operator import lt, gt
exp1 = lt(np.float64(0.8514), 0)
exp2 = gt(np.float64(0.8514), 0)
val = int(exp1) - int(exp2)
print(val) # -1
val = float(exp1) - float(exp2)
print(val) # -1.0https://stackoverflow.com/questions/58763079
复制相似问题