Python numpy:跳过计算(数学)

2024-09-28 05:28:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个三维numpy数组,需要做一些数学上。有除法、指数法和根提取法。由于我不能控制数组中的输入,numpy必然会遇到一堆数学错误。你知道吗

目前,我正试图抓住所有可能的例外,但有太多,我永远不能确定,如果我得到所有的每一个可能的szenario和50+公式。我的意图是用nodata值初始化输出矩阵,并且在发生错误时numpy将它们留在原位。你知道吗

将以下示例作为一维表示(numpy作为np导入):

a = np.array([10, 20, 30, 40], dtype=np.float16) # my data source
b = np.full(shape=(4,3), fill_value=-999, dtype=np.float16) # shape: length =4, no. of different calculations=3
b[:,0] = a / (a-10)
b[:,1] = a**200
b[:,2] = np.sqrt(a-40)

如果我这样运行代码,我会得到三个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'),但这只是抑制了到我的控制台的输出。你知道吗


Tags: numpy错误np数学sqrt数组nan指数

热门问题