(テストだけでなく)例外のような厄介な警告をキャッチするにはどうすればよいですか?

| | |

実行中のプロジェクトでは、Pythonでラグランジュ多項式を作成する必要があります。ニュートンの差商スタイルではなく、明示的なforループを使用しないように、重心スタイルを実行しています。問題私が持っているのは、ゼロによる除算をキャッチする必要があるということですが、Python(またはおそらくnumpy)は、通常の例外ではなく警告にするだけです。

したがって、私が知る必要があるのは、この警告を例外であるかのようにキャッチします。このサイトで見つけたこれに関連する質問は、必要な方法で回答されませんでした。私のコードは次のとおりです。

  import numpy as np import matplotlib.pyplot as plt import warnings class Lagrange:def __init __(self、xPts、yPts):self.xPts = np.array(xPts)self.yPts = np.array(yPts)self.degree = len(xPts)-1 self.weights = np.array([np.product([x_j --x_i for x_j in xPts if x_j!= x_i])for x_i in xPts])def __call __(self、x):warnings.filterwarnings( "error")試してください:bigNumerator = np.product(x --self.xPts)numerators = np.array([bigNumerator /(x --x_j) for x_j in self.xPts])return sum(numerators / self.weights * self.yPts)例外を除いて、e:#0による除算をキャッチします。「numerators」配列でのみ可能return yPts [np.where(xPts == x )[0] [0]] L = Lagrange([-1,0,1]、[1,0,1])#2次ポリを作成しますL(x)= x ^ 2 L(1)#これはエラーが発生したら、1を返します。 

このコードを実行すると、次の出力が得られます。

 警告:int_scalarsでゼロ除算が発生しました 

それは私がキャッチしたい警告です。リスト内包表記内で発生する必要があります。