1

みんな、

現在、matplotlib の griddata によって生成される補間に問題があります。データ ポイントごとに 3 つの値を含むデータ セットがあります。このデータを等高線でプロットしようとしています。私が抱えている問題は、組み込みの遅延補間が一部のデータセットで壊れることです。そこで、natg​​rid インターポラトインに移行しようとしました。これは一部のデータで機能します。ただし、他のデータ セットでは、griddata の出力でいくつかの null 値が生成されます。これらの null 値は、ほとんどの値が同じ (この場合は 0) の領域で発生することにも言及する必要があります。

これを引き起こす原因について何か提案はありますか?

編集:ここにいくつかの詳細があります。

ソース データがかなり大きいため、ここに貼り付けることができません。それで、私はそれを保持するためにペーストビンを使用しました。これが許可されることを願っています。ここから入手できます: http://pastebin.com/C7Nvvcaw。これは、x、y、z のようにフォーマットされます。したがって、最初の列は x 値などです。これは、xyz リスト内のすべての項目を出力し、それをファイルにパイプした結果です。

補間後のデータについても同様です。それで、ペーストビンも使用しました。ここにあります:http://pastebin.com/ZB6S2qFk。各 [] は特定の y 値に対応します。y の値は別のリストにあるため、含まれていません。ただし、Y 軸の場合は 0 ~ 50、X 軸の場合は 0 ~ 100 の範囲です。これは、コードから zi リスト内のすべての項目を出力し、それをファイルにパイプした出力です。

コードについては、コードの大部分がこの質問の範囲外であるため、すべてのコードを添付していません。というわけで、関連するコンポーネントを投稿します。初期データは、3 次元でデータをナビゲートする機能を提供するリストのリストにあります。これは 3 次元配列に似ていると思いますが、そうではなく単なるリストのリストです。ソース データのリストは xyz と呼ばれます。

    #Function to get individual column of data
    def column(matrix, i):
            return [row[i] for row in matrix]

    #Getting Max and Mins
    xmin = float(min(column(xyz, 0)))
    xmax = float(max(column(xyz, 0)))
    ymin = float(min(column(xyz, 1)))
    ymax = float(max(column(xyz, 1)))

    #Resolution for interpolation (x and y list lengths)
    resx = 100
    resy = 50

    xi = np.linspace(xmin, xmax, resx)
    yi = np.linspace(ymin, ymax, resy)

    x = np.array(column(xyz, 0))
    y = np.array(column(xyz, 1))
    z = np.array(column(xyz, 2))

    zi = griddata(x, y, z, xi, yi, interp='nn')

編集:解決策を見つけました。0 値は補間を破っています。それらをキャッチしてすべてを 0.1 に変更すると、補間によって null 値が生成されなくなりました。0 と 0.1 は同じ輪郭色に分類されるため、これは私の場合は許容されます。他のユーザーの場合、データの絶対精度を維持する必要がある場合は、すべての値を +1 で変換し、補間してから、補間された値を -1 に変換することをお勧めします。これにより、補間方法を壊すことなく精度が維持されます。

助けてくれてありがとう、

ダニエル

4

0 に答える 0