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])
我要问一个关于这个错误的问题: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])