Python 学習:Interpolation

2014-03-04 :  PCクリニック
本文の前に、
-・・・ -・-
現時点での、blogramのランクインカテゴリは、
2、2、2、1、2、 0、0、0、0、1(38)で、換算ポイント 57pt 。
特段の変化は無し。
・-・ - -・

さて、本文。

前記事(2014-03-02):
Python 学習:Fitting
に続いて、Python の学習。

今回は、データの“Interpolation”
即ち“補間”について。


これまでの記事を検索してみたが、
残念ながら、
「interp」でも、「補間」でも、
1件も見つからない。


まあ、それは置いておいて、
「Python」で、補間関数を定義するには、
「Scipy」パッケージの「interpolate」モジュールを使う?
これでは、「Fitting」の時と違って、
「Numpy」パッケージは特に要らなかった。

1次元、即ち、飛び飛びの x の値に対して y の値がある時に、
y=f(x) となる、補間関数を求めるには、
「f = interp1d( x, y )」の様にする。
“from scipy.interpolate import interp1d”
とインポートは、しておくが。


今回の目的は、2次元版。
つまり、
飛び飛びの x 及び y の値の組に対して z の値がある時に、
y=f(x,y) となる、補間関数を求める、もの。

テストとして、

from scipy import interpolate

x = [0,1,2]; y = [0,3,8]; z = [ [1,2,3], [4,5,6], [3,7,6] ]
# x can specify the column coordinates and y the row coordinates
# f = interpolate.interp2d(x, y, z, kind='cubic', ・・・ )

f = interpolate.interp2d( x, y, z, kind='linear' )

for i in range(9): print f(1,i)[0]

としてみると、

 2.0 3.0 4.0 5.0 5.4 5.8 6.2 6.6 7.0

でした。
正解ですね。

なお、[0] と要素を取り出しているのは、
“f(1,i)”は(1要素だが)リスト、じゃなくて“アレイ”だから。

それから、「kind='linear'」とショボイもの(?)にしているのは、
データ点数が少ないから。
それでも、「kind='nearest'」よりは滑らか。

もっと点数が多ければ( 4x4 以上ならば )、「kind='cubic'」もできますね。
( cubic spline : 三次スプライン で補間 )


もっともっと、Python の学習に精進します。



見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


140216
関連記事
スポンサーサイト

コメントの投稿

管理者にだけ表示を許可する

おきてがみ/blogram
blogram投票ボタン



おきてがみ

最新記事
カレンダー
08 | 2017/09 | 10
- - - - - 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
月別アーカイブ
カテゴリ
最新コメント
検索フォーム
リンク
プロフィール

<紙>

Author:<紙>
ようこそ。
「パソコンヲタクの雑記帳」
もろもろなことを綴っています。
パソコン ヲタクってねくら?
画像は kami でなく kani です。

カウンター(fc2、i2i) /Google Analytics


i2i(from 2010-08-24)
Total =
Today  =  
Yesterday=
アンチエイジング

Google Analytics
ブックマーク