Python numpy:跳过(数学-)错误的计算

Python numpy:跳过(数学-)错误的计算,python,arrays,numpy,Python,Arrays,Numpy,我有一个3d numpy数组,需要对它做一些数学运算。有除法、指数法和根抽取法。由于我无法控制数组中的输入,numpy必然会遇到一系列数学错误 目前,我正在尝试捕捉所有可能的例外情况,但有太多的例外情况,我永远无法确定我是否能获得所有可能的szenario和50+公式的所有例外情况。我的目的是用nodata值初始化输出矩阵,当出现错误时,numpy将它们保留在原位 以1d表示形式给出以下示例(numpy作为np导入): 如果我像这样运行代码,我会得到三个RuntimeWarning(除零、溢出和

我有一个3d numpy数组,需要对它做一些数学运算。有除法、指数法和根抽取法。由于我无法控制数组中的输入,numpy必然会遇到一系列数学错误

目前,我正在尝试捕捉所有可能的例外情况,但有太多的例外情况,我永远无法确定我是否能获得所有可能的szenario和50+公式的所有例外情况。我的目的是用nodata值初始化输出矩阵,当出现错误时,numpy将它们保留在原位

以1d表示形式给出以下示例(numpy作为np导入):

如果我像这样运行代码,我会得到三个RuntimeWarning(除零、溢出和sqrt中的无效值)。尽管如此,我的b数组仍然充满了结果:

b[:,0] -> [ inf 2. 1.5 1.333 ]
b[:,1] -> [ inf inf inf inf ]
b[:,2] -> [ nan nan nan 0. ]
相反,我希望numpy跳过计算并保留初始化值,以便

b[:,0] -> [ -999. 2. 1.5 1.333 ]
b[:,1] -> [ -999. -999. -999. -999. ]
b[:,2] -> [ -999. -999. -999. 0. ]
我可以稍后将inf或nan转换为-999,但这是另一个迭代,而且很耗时。我还发现了
np.seterr(all='ignore')
,但这只会抑制到我的控制台的输出

看看NumPy看看NumPy
b[:,0] -> [ -999. 2. 1.5 1.333 ]
b[:,1] -> [ -999. -999. -999. -999. ]
b[:,2] -> [ -999. -999. -999. 0. ]