如何在numpy中处理np.RankWarning?

and*_*geo 14 python exception-handling numpy

尽管我是新手并且乞求你的宽容,我会尽力尽力说出这句话:

我使用下面的代码找到最适合我从物理温度传感器动态读取的一些数据的多项式:

coefficients = numpy.polyfit(x, y, 2)
polynomial = numpy.poly1d(self.coefficients)

#and then I using matpltlib to plot
matplotlib.pyplot.plot(self.x, self.y, 'o')
Run Code Online (Sandbox Code Playgroud)

我不时会收到足够的数据,因此我会收到错误:

"RankWarning:Polyfit可能是条件差的警告.警告(警告,等级警告)"

很公平.这是我需要做的(而且不能):如果我从polyfit得到异常,那么我不想尝试绘图.换句话说,当我得到异常时,我需要采取行动,而不仅仅是忽略异常.我在numpy文档中找到的一些代码只是忽略了异常

import warnings
warnings.simplefilter('ignore', np.RankWarning)
Run Code Online (Sandbox Code Playgroud)

我尝试使用try除外,但在这种情况下不起作用(我对不同类型的异常有基本的了解,尽管我打算更快地阅读).

您的建议赞赏!

HYR*_*YRY 22

import numpy as np
import warnings
x = [1]
y = [2]

with warnings.catch_warnings():
    warnings.filterwarnings('error')
    try:
        coefficients = np.polyfit(x, y, 2)
    except np.RankWarning:
        print "not enought data"
Run Code Online (Sandbox Code Playgroud)