2025-10-08

【備忘録】NumPy の警告を例外として扱う

NumPy は、プログラミング言語 Python において数値計算を効率的に行うための拡張モジュールです。効率的な数値計算を行うための型付きの多次元配列(例えばベクトルや行列などを表現できる)のサポートを Python に加えるとともに、それらを操作するための大規模な高水準の数学関数ライブラリを提供しています。

Wikipedia より引用、編集

Numpy の関数計算で無効な引数を指定した場合、RuntimeWarning という警告が出るものの np.float64(nan) を返すだけの場合があります。例を以下に示しました。

import numpy as np

v = -1
np.log(v)
/tmp/ipykernel_10573/3390615159.py:4: RuntimeWarning: invalid value encountered in log
  np.log(v)
np.float64(nan)

np.float64(nan) で処理されて都合が良い時もありますが、例外処理をしたい場合もあります。

警告を例外として扱う方法を Microsoft Copilot に尋ねてみたところ、三つのやり方を教えてくれました。

その中で、最もしっくりきた方法を備忘録にしました。

import warnings

import numpy as np

# NumPyの警告を例外として扱う設定
warnings.filterwarnings("error")

try:
    v = -1
    result = np.log(v)
except Warning as e:
    print(f"警告が例外としてキャッチされました: {e}")
警告が例外としてキャッチされました: invalid value encountered in log

使用した OS 環境は以下のとおりです。

Fedora Linux Workstation 42 x86_64
Python 3.13.7
jupyterlab 4.4.9
numpy 2.2.6

参考サイト

  1. Pythonのwarningsで警告(Warning)を非表示、例外化 | note.nkmk.me

 

ブログランキング・にほんブログ村へ bitWalk's - にほんブログ村 にほんブログ村 IT技術ブログ オープンソースへ
にほんブログ村

オープンソース - ブログ村ハッシュタグ
#オープンソース



このエントリーをはてなブックマークに追加

0 件のコメント: