1

scipy.interpolate の griddata 関数に問題があります。サンドボックスで griddata を使用して簡単なインターポレーターを開発し、気に入ったインターポレーターを作成したら、その関数を私が開発したより大きなモデルにコピーしました。関数は次のとおりです。

def windGrid(*sensors):
    """Creates grids of wind speed components"""
    xb = [0, 0, num_x, num_x]
    yb = [0, num_y, num_y, 0]

    xs = [s.lng for s in sensors]
    ys = [s.lat for s in sensors]
    us = [s.u for s in sensors]
    vs = [s.v for s in sensors]

    ub, vb = boundaryWeighting(*sensors)

    x = xb+xs
    y = yb+ys
    u = ub+us
    v = vb+vs

    x_grid, y_grid = np.mgrid[0:num_x, 0:num_y]

    zx = griddata((x, y), u, (x_grid, y_grid))
    zy = griddata((x, y), v, (x_grid, y_grid))

   return zx, zy

boundaryWeighting() 関数は、グリッドのコーナーの風速コンポーネントを返すだけで、その範囲内で補間を行うことができます。ここで奇妙な部分があります... サンドボックスで griddata を呼び出すと (つまり、他の独立した関数がない場合)、正常に動作します。ただし、コピー先の python ファイルで呼び出すと、次のエラーが返されます。

TypeError: griddata() takes at least 5 arguments (3 given)

Scipy のドキュメントによると、griddata は 5 つの引数を取りますが、最後の 2 つはオプションです。オプションの引数 (つまり、method と fill_val) を挿入しようとしましたが、次のエラーが発生しました。

TypeError: griddata() got an unexpected keyword argument 'method'

そのため、python インタープリターは、異なる python ファイルで griddata の異なるバージョン/関数を参照しているようです。

これが意味をなさない理由は次のとおりです。 1. 両方のファイルが同じディレクトリにあり、同じインタープリターを使用している 2. 両方のファイルが同じ Scipy バージョン 0.12.0 を参照している

すべての変数/関数の割り当てを確認しましたが、重複はありません。なぜこれが起こっているのかについての手がかりはありますか?

ありがとう

4

1 に答える 1