11

トレーニング値の規則的なグリッド (それぞれのグリッド xmesh と ymesh および zmesh の既知の値を持つベクトル x と y) がありますが、補間される分散/不規則/不規則な値のグループ (zI に関心があるベクトル xI と yI [0] = f(xI[0],yI[0]) ... zI[N-1] = f(xI[N-1],yI[N-1]). この補間は数百万と呼ばれますそのため、グリッドを作成してトレースを取る方法を単純に使用するには、パフォーマンスが重要すぎます。

これまでのところ、必要なものに近い scipy.interpolate 関数、Bpf 関数を 1 つ見つけることができました。しかし、それは散らばった入力を扱っているので、パフォーマンスが良くないと思います.スプライン、線形、および私がよく理解している最近傍補間法に対してテストしたいと思います。通常のグリッドをトレーニング データ ( RectBivariateSpline など) として使用することがわかったこれらを実装するすべてのメソッドも、値を補間するために通常のグリッドを必要とするようです。

このコードは、私が求めていることを明確にすることを願っています。

import numpy as np
import scipy as sp
import scipy.interpolate as interp

x = np.arange(0,2*np.pi,.1)
y = x
xmesh,ymesh = np.meshgrid(x,y)
zmesh = np.sin(xmesh)+np.cos(ymesh)
rbf = interp.Rbf(xmesh, ymesh, zmesh, epsilon=2)
xI = np.arange(0,np.pi,.05)
yI = xI
XI, YI = np.meshgrid(xI,yI)
# Notice how this is happy to take a vector or grid as input   
zI = rbf(xI, yI)
ZI = rbf(XI,YI) # equiv. to zImesh
myspline = interp.RectBivariateSpline(x, y, zmesh)
# myspline takes vectors as input but makes them into meshes for evaluation 
splineoutput = myspline(xI, yI) 
# myspline returns ZI but I want zI
print(splineoutput)
print(ZI)
print(zI)

RectBivariateSpline のような関数を使用して、ZI (メッシュ) の代わりに zI (ベクトル) を取得するためにできることはありますか? あるいは、代替の最適化方法で私が望むように機能する別の関数ファミリがありますか?もしそうなら、何を探すべきですか?

私が探しているのは、比較的大きなデータ配列 (20,000 エントリ以上) で、グリッド ポイント間の距離が短く、データが非常に滑らかな場合の高速な最適化手法であることを簡単に思い出してください。既存のライブラリで必要なことを行うための、素晴らしくシンプルな方法があると思われますが、それが見つかりません。お手伝いありがとう。

4

2 に答える 2

10

これ: http://docs.scipy.org/doc/scipy/reference/generated/scipy.interpolate.RectBivariateSpline.ev.html

いえmyspline.ev(xI, yI)

于 2012-07-30T21:16:02.600 に答える