2014-01-21 5 views
6

私は初心者であり、あなたの寛大さを請うが、私はできる限り最善の言い方をしようとします:numpyでnp.RankWarningを処理する方法は?

私は以下のコードを使用して、温度センサー:

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') 

時々に私は十分なデータを受信しませんし、結果として、私はエラーが発生します。

「RankWarning:関数polyfitは不十分コンディショニングwarnings.warn(MSG、RankWarning)であってもよいです"

十分な公正。ここで私がしなければならないことがあります(そしてできません)。私がpolyfitからの例外を得るなら、私はプロットを試みたくありません。言い換えれば、私は例外が発生したときにアクションを取る必要があり、例外を無視するだけではありません。私はnumpyのドキュメントで見つかったいくつかのコードは、単に私がすることを計画しても(私は、例外の種類の基本的な理解を持って、私は除いて試して使用して試してみましたが、それはこのケースでは動作しません例外

import warnings 
warnings.simplefilter('ignore', np.RankWarning) 

を無視しますもっと早く読んでください)。

あなたの提案は高く評価されました。

答えて

15
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" 
+0

これはこれでした:)ありがとうたくさんのHYRY! (申し訳ありませんが私はupvoteできない、それは私がまだそうするために十分な評判がない:)) – andgeo

関連する問題