在 numpy array-wise 计算中忽略错误警告
neglect error warning in numpy array-wise calculation
你好我想知道我是否可以使用类似 "try-except" 的东西来避免错误警告并将 np.nan 放入结果数组?
例如
import numpy as np
a = np.array([1,1])
b = np.array([1,0])
c = a/b
会有一个"division by zero error"
我希望忽略此错误并将 c 设置为 np.array([1,np.nan])
我知道我可以使用循环和 try-except 通过遍历数组中的所有元素来实现这一点。但是,有没有更优雅的方法来完成这个循环?
如果必须循环,最快的方法是什么?
In [219]: a = np.array([1,1])
...: b = np.array([1,0])
...: c = a/b
/usr/local/bin/ipython3:3: RuntimeWarning: divide by zero encountered in true_divide
# -*- coding: utf-8 -*-
In [220]: c
Out[220]: array([ 1., inf])
将 /
替换为 divide
。作为 ufunc
它接受 where
和 out
参数,它们一起工作以跳过 0 并放置 nan
代替:
In [224]: np.divide(a,b, where=(b!=0), out=np.full(a.shape,np.nan))
Out[224]: array([ 1., nan])
也可以取消警告,但这不会用 nan
替换 inf
。此 ufunc
代码是同时执行这两项操作的最简单方法。
你好我想知道我是否可以使用类似 "try-except" 的东西来避免错误警告并将 np.nan 放入结果数组?
例如
import numpy as np
a = np.array([1,1])
b = np.array([1,0])
c = a/b
会有一个"division by zero error" 我希望忽略此错误并将 c 设置为 np.array([1,np.nan])
我知道我可以使用循环和 try-except 通过遍历数组中的所有元素来实现这一点。但是,有没有更优雅的方法来完成这个循环?
如果必须循环,最快的方法是什么?
In [219]: a = np.array([1,1])
...: b = np.array([1,0])
...: c = a/b
/usr/local/bin/ipython3:3: RuntimeWarning: divide by zero encountered in true_divide
# -*- coding: utf-8 -*-
In [220]: c
Out[220]: array([ 1., inf])
将 /
替换为 divide
。作为 ufunc
它接受 where
和 out
参数,它们一起工作以跳过 0 并放置 nan
代替:
In [224]: np.divide(a,b, where=(b!=0), out=np.full(a.shape,np.nan))
Out[224]: array([ 1., nan])
也可以取消警告,但这不会用 nan
替换 inf
。此 ufunc
代码是同时执行这两项操作的最简单方法。