布尔减法弃用警告
我最近升级到了numpy 1.9dev版本。 (为了更好地支持OpenBlas)。
我有一些代码在做 x-y
的运算,
其中 x
和 y
是从一个概率分布中取样的值。
如果这个分布是伯努利分布,那么它们就是布尔值(真或假)。
如果是高斯分布,那么它们就是浮点数(小数)。
根据不同的情况,x
和 y
可能是布尔值也可能是浮点数。
我不需要担心这一点,因为Python有鸭子类型的特性。
只要能进行减法运算,x
和 y
就是有效的值。
但是我收到了一个警告:
DeprecationWarning: numpy布尔值的减法(使用二元
-
操作符) 已经不推荐使用,建议使用位运算异或(^
操作符)或者 逻辑异或函数。
我通过将它们强制转换为浮点数来消除了这个警告。 这样做可能是个好事,因为它让代码在底层变得更一致。 (不过我对此并不完全确定)。
那么我应该采取什么正确的措施呢?
我不能使用布尔值或位运算异或,因为当 x
和 y
是浮点数时,这样会出错。
如果根据 x
和 y
的类型来分支代码,那样看起来会很麻烦。
2 个回答
1
这是我的解决方案:
z = (x.astype(np.float32) - y.astype(np.float32)).astype(np.bool)
16
也许你应该这样做:
x=x.astype(numpy.float32)
y=y.astype(numpy.float32)
然后
x - y
至少在我的情况下,这样做是有效的。