Pythonでn次元のデータを補間して利用する方法

  • このエントリーをはてなブックマークに追加
  • LINEで送る

n次元のグリッド型のデータがあるときに、それを補間して使うやり方を探したけれど、いまいち見つからなかったのでメモ。

たとえば、次のようなデータがあったとする。

不快指数データ

湿度/気温 25 degC 30 degC 35 degC
70% 73.9 81.4 88.9
80% 74.9 82.9 90.9
90% 76 84.5 93
100% 77 86 95

このようなデータが与えられたとき、この表の値と値の間のデータを得たいとする。例えば27 degC, 湿度75%だと不快指数はいくらか、などという問題だ。1回この2次元の計算するだけなら手で計算するなり、いくらでも簡単にできるが、これを何百回もやるような場合は明らかによいライブラリを使ったほうがよい。また、4-5次元のデータだったりすると手で計算するのはかなり難しい。(ちなみに、実際には不快指数は計算式があるので表から内挿する必要はない)

このデータ(不快指数の値のみ)がdata.txtというファイルに入っているとすると、下記のコードで上記の線形補間が得られる。

3次元以上の場合でも基本的にやることは変わらない。ただし、RegularGridInterpolatorで読み込む前にデータのshapeを整えてやる必要がある。上記のデータは4*3のmatrixだったが、たとえばこれが温度と湿度だけではなく風速の関数であったらどうだろう。風速=0, 2, 4, 6, 8m/sという次元が加わった場合、一度np.genfromtxtで読んだデータをreshapeで整えてやる必要がある。例えば次のような具合だ。

このように形を整えてやることで、RegularGridInterpolatorが読めるようになる。これさえマスターすればn次元の問題が出てきても問題ない。外挿に関してはこのやり方はできないが、とりあえず内挿でよければこれだけでなんとかなる。

  • このエントリーをはてなブックマークに追加
  • LINEで送る

SNSでもご購読できます。

コメントを残す

*