汎用データのパイプロッティングを行って、それを電力値からdB値に変換しています。これらの値が由来するシステムにより、0は「有用なデータはここで終了します」インジケーターとして使用されます(定義された値ではなく、数学の性質)。
これらを処理する私の通常の方法は、変換をtry / exceptionでラップし、デフォルトの「low」値を返すことです。
def f(value):
try:
return convert(value)
except ValueError:
return -140 #implementation specific, don't worry
これは、グラフ化の場合を除いて、私のフレームワーク内での使用の90%にとっては問題なく、ダンディです。
私は怠け者なので、その瞬間に私がすることは次のとおりです。
pl.plot(xvals,map(f,yvals))
これにより、データが正しく描画され、データが終了すると、予想される動作である崖から急降下します。しかし、私がしたいのは、グラフがValueError例外に遭遇したときにグラフを終了し、f()を完全に廃止することです。
マップをループに分割する以外に、素晴らしいアイデアを思いついた人はいますか?
更新:
私はPylab/MatplotLibを使用しています。「エンドポイント」は実行に依存します。「悪い」値がないため、上記がまったく問題にならない場合があります。これはすべて、私が怠惰になり、ydataの最小値に基づいて動的ylimをリセットする代わりにmatplotlibsグラフスケーリングを使用するための努力です(これはatmではなく、この場合はylim(-140)だけです)。
回答に関する漠然と重要な更新:この定期的に使用される関数でStopIterationを発生させると、質問とは無関係に大混乱が発生するため、unutbuの回答は、実際に実装に使用するものです(質問の依存関係には記載されていません)。他のすべてのインスタンスをtry-exceptsに入れないで、ロジックを制御します。時々-infはあなたが思っているよりも理にかなっています。
素晴らしく速いことをみんなに感謝します、そして私はQuestionFailのためにunutbuに謝罪します。