2

Python では、scipy.interpolate.griddata(x,y,z,xi,yi) を使用してデータを補間したいと考えています。

等間隔の XI-YI グリッド上の XY グリッド マップ上に不等間隔の元のデータが必要なため、meshgrid を次のように使用する必要があります。

X, Y = numpy.meshgrid([1,2,3], [2,5,6,8])
XI,YI = numpy.meshgrid([1,2,3],[4,5,6,7])
print scipy.interpolate.griddata(X,Y,X**2+Y**2,XI,YI)

残念ながら、scipys の griddata は、matlab の griddata-function とは対照的に、x、y、z の入力として行列を受け入れないようです。問題を解決する方法を教えてくれる人はいますか?

4

2 に答える 2

3

あなたの場合の正しい呼び出しシーケンスは

print scipy.interpolate.griddata((X.ravel(),Y.ravel()), (X**2+Y**2).ravel(), (XI, YI))

つまり、入力データ ポイントを 1-d にキャストする必要があります。.ravel()(これは、Scipy の次のバージョンで sなしで動作するように修正される可能性があります。)

于 2011-06-15T14:15:36.397 に答える
0

グリッドの形状を変更する必要があると思います.griddataは、列形式の座標を持つポイントのリストを期待しています:

points = transpose(reshape((X,Y), (2,12)))
pointsI = transpose(reshape((XI,YI), (2,12)))
Z = reshape(X**2+Y**2, 12)

print scipy.interpolate.griddata(points, Z, pointsI)
于 2011-06-15T14:10:52.857 に答える