【发布时间】:2015-03-06 17:31:56
【问题描述】:
我有两个 numpy 数组,我试图将一个与另一个相除,同时,我想确保除数为 0 的条目应该被替换为 0。
所以,我会这样做:
log_norm_images = np.where(b_0 > 0, np.divide(diff_images, b_0), 0)
这给了我一个运行时警告:
RuntimeWarning: invalid value encountered in true_divide
现在,我想看看发生了什么,我做了以下事情:
xx = np.isfinite(diff_images)
print (xx[xx == False])
xx = np.isfinite(b_0)
print (xx[xx == False])
但是,这两个都返回空数组,这意味着数组中的所有值都是有限的。所以,我不确定无效值来自哪里。我假设在 np.where 函数中检查 b_0 > 0 会处理除以 0。
两个数组的形状分别是(96, 96, 55, 64)和(96, 96, 55, 1)
【问题讨论】:
-
为什么
xx是False和一个字典? -
我认为 isfinite 返回一个布尔数组。所以,我正在寻找值不是有限的地方。
-
试试
[x for x in xx if x == False]。你只是想获取密钥False -
对于它的价值,您可以使用
~运算符“反转”布尔数组。例如。print your_data[~np.isfinite(your_data)].