问题描述
我有两个numpy数组,并且试图将一个数组除以另一个,同时,我想确保除数为0的条目应仅替换为0.
I have two numpy arrays and I am trying to divide one with the other and at the same time, I want to make sure that the entries where the divisor is 0, should just be replaced with 0.
所以,我做类似的事情:
So, I do something like:
log_norm_images = np.where(b_0 > 0, np.divide(diff_images, b_0), 0)
这给了我一个运行时警告:
This gives me a run time warning of:
RuntimeWarning: invalid value encountered in true_divide
现在,我想看看发生了什么,我做了以下工作:
Now, I wanted to see what was going on and I did the following:
xx = np.isfinite(diff_images)
print (xx[xx == False])
xx = np.isfinite(b_0)
print (xx[xx == False])
但是,这两个都返回空数组,这意味着数组中的所有值都是有限的.因此,我不确定无效值来自何处.我假设在np.where函数中检查b_0> 0会处理除以0的问题.
However, both of these return empty arrays meaning that all the values in the arrays are finite. So, I am not sure where the invalid value is coming from. I am assuming checking b_0 > 0 in the np.where function takes care of the divide by 0.
两个阵列的形状分别是(96、96、55、64)和(96、96、55、1)
The shape of the two arrays are (96, 96, 55, 64) and (96, 96, 55, 1)
推荐答案
您可能有NAN
,INF
或NINF
漂浮在某处.试试这个:
You may have a NAN
, INF
, or NINF
floating around somewhere. Try this:
np.isfinite(diff_images).all()
np.isfinite(b_0).all()
如果其中一个或两个都返回False
,则可能是运行时错误的原因.
If one or both of those returns False
, that's likely the cause of the runtime error.
这篇关于numpy:在true_divide中遇到无效的值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!