RuntimeWarning:在除法中遇到被零除

RuntimeWarning: divide by zero encountered in divide

我要问一个关于这个错误的问题:RuntimeWarning:在除法中遇到被零除

例如,我有两个二维数组。第一个包含大量数据 (array_1),第二个包含二进制数据 (0 或 1) 作为掩码 (mask_array)。

我想做这个手术:

result = array_1 / mask_array

显然,我会收到此 RuntimeWarning 错误。所以我的问题是: 是否可以这样写:如果我除以零,结果写为 0?

我想如果我除以 0 会得到一个 NaN 吗?

那么每次出现错误时,我该如何进行操作并将结果替换为零?

感谢您的帮助!

您似乎只想将 mask_array 为 0 的所有元素设置为零。

您可以使用以下方法将所有这些元素设置为零:

result = array_1.copy()
result[mask_array == 0] = 0  # Indexes all elements that are zero and sets them to zero.

或者您也可以使用 numpy.ma.MaskedArray:

result = np.ma.array(array1.copy(), mask=mask_array)

然后对其进行运算

@schwobaseggl 的评论也很有帮助,因为您可能需要乘法而不是除法:

array1 = np.array([1, 2, 3, 4])
mask = np.array([1, 0, 1, 0])
array1 * mask
# gives: array([1, 0, 3, 0])