[SciPy] 11. interp2d関数を用いた2次元データの補間方法

matplotlib

はじめに

本記事では、SciPyのinterpolateモジュールに含まれるinterp2d関数を用いた2次元データの補間方法について解説します。粗いデータから滑らかな曲面を生成する方法や、不規則に配置された点から任意の位置の値を推定する技術を学ぶことができます。科学計算やデータ解析において重要な2次元補間の基礎から応用まで、コード例を交えて分かりやすく説明していきます。

コード

解説

モジュールのインポート

バージョン

データの作成

np.meshgridを使用して、2つの1次元データから2次元格子データを生成します。そして、この2次元格子データに基づいてZの値が計算されるため、Zも2次元データとなります。

データの表示

imshowでヒートマップとして表示すると下のようになります。

3次元プロットで表示

データを3次元グラフで表示すると下のようになります。

interp2dによる補間

interpolate.interp2d(X, Y, Z, kind=’cubic’)において、XとYは座標位置を表すデータであり、Zは補間の元となるデータです。kindパラメータは補間方法を指定し、’cubic’を選択すると3次スプラインによる補間が行われます。

補間データの作成

xnewとynewを間隔の細かいデータとして補間関数fに入力することで、高精細な補間データを得ることができます。ここで注意すべき点は、xnewとynewは2次元データではなく、それぞれ1次元のデータとして準備する必要があります。

補間データの表示

補間後のデータをimshowで表示すると、下のように滑らかなヒートマップになります。

補間データを3Dグラフで表示

3次元グラフで表示すると、下のように滑らかなプロットとなっていることが分かります。

y=0の位置のデータを表示

y=0の位置におけるx-zデータについて、元データと補間データを比較した結果は以下のようになります。

まとめの図

これまでに示した図を一つにまとめて表示すると、以下のようになります。

補間方法を変化させた場合

kind=”linear”

1次式(線形)による補間が行われます。

kind=”quintic”

5次式による補間が行われます。

コードをダウンロード(.pyファイル)

コードをダウンロード(.ipynbファイル)

参考

interp2d — SciPy v1.16.1 Manual

コメント