python - 如何用零除返回0

标签 python arrays numpy error-handling divide-by-zero

我正在尝试在 python 中执行元素明智除法,但如果遇到零,我需要商为零。

例如:

array1 = np.array([0, 1, 2])
array2 = np.array([0, 1, 1])

array1 / array2 # should be np.array([0, 1, 2])

我总是可以在我的数据中使用 for 循环,但要真正利用 numpy 的优化,我需要除以零错误时返回 0,而不是忽略错误。

除非我遗漏了什么,否则它似乎不是 numpy.seterr()可以在错误时返回值。有没有人对我如何在设置自己的除以零错误处理时充分利用 numpy 有任何其他建议?

最佳答案

在 numpy v1.7+ 中,您可以利用 ufuncs 的“where”选项。 .您可以在一行中完成操作,而不必与 errstate 上下文管理器打交道。

>>> a = np.array([-1, 0, 1, 2, 3], dtype=float)
>>> b = np.array([ 0, 0, 0, 2, 2], dtype=float)

# If you don't pass `out` the indices where (b == 0) will be uninitialized!
>>> c = np.divide(a, b, out=np.zeros_like(a), where=b!=0)
>>> print(c)
[ 0.   0.   0.   1.   1.5]

在这种情况下,它会在任何 'where' b 不等于 0 的地方进行除法计算。当 b 确实等于 0 时,它与您最初在 'out' 参数中给出的任何值保持不变。

关于python - 如何用零除返回0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26248654/

相关文章:

python - 写入\n 到 .txt 文件不会产生换行符,只是显示\n

python - 使用网络应用程序更新已发布的 Google 电子表格?

python - 如何将此过程代码设计为基于类(面向对象)的?

sql - Postgres GROUP BY 数组列

python - 自动使 matplotlib 图像与其他子图标签齐平

python - 我正在尝试从 panda 数据框中删除额外的字符,并且我创建了一种方法来执行此操作。但是当从另一个方法调用时它不起作用

python - python 字典中的 for 循环

ios - 在缓存 iOS Swift 中存储数据数组

javascript - 通过搜索模式从具有多个键的数组中查找和删除

python - 使用 slider 更新均匀分布的网格中的值