我是靠谱客的博主 糊涂红酒,最近开发中收集的这篇文章主要介绍python中end提示我=错误_python - 我如何捕获一个numpy警告,就像它是一个异常(不仅仅是测试)?...,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

我必须在Python中为我正在做的项目制作拉格朗日多项式。 我正在做一个重心的样式,以避免使用显式的for循环而不是Newton的分割差异样式。 我遇到的问题是我需要将除法除以零,但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")

try:

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)

except Exception, e: # Catch division by 0. Only possible in 'numerators' array

return yPts[np.where(xPts == x)[0][0]]

L = Lagrange([-1,0,1],[1,0,1]) # Creates quadratic poly L(x) = x^2

L(1) # This should catch an error, then return 1.

执行此代码时,我得到的输出是:

Warning: divide by zero encountered in int_scalars

这是我想要捕捉的警告。 它应该出现在列表理解中。

最后

以上就是糊涂红酒为你收集整理的python中end提示我=错误_python - 我如何捕获一个numpy警告,就像它是一个异常(不仅仅是测试)?...的全部内容,希望文章能够帮你解决python中end提示我=错误_python - 我如何捕获一个numpy警告,就像它是一个异常(不仅仅是测试)?...所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部