2016-09-26 27 views
0

私は1つの2Dベクトルをとり、その点のpdf(スカラー)を返す関数を持っています。3Dプロットでの(x、y)のプロット関数

例として、myPDF(np.array[4,4])は、< 4,4>に単一のpdf値を返します。この関数はベクトルのリストを取ることはできず、1つの2Dベクトルだけを引数として受け取ります。

今、私は以下のようにplot_surfaceを使用してこのPDFをプロットしたい: enter image description here これは私が

x = np.arange(-10,10) 
y = np.arange(-10,10) 
z = [ myPDF(np.array([xx,yy])) for xx in x for yy in y] 
xy = [ [xx, yy] for xx in x for yy in y] 

を試してみましたが、ここで私はこだわっていたものです。私は何らかの適切な形でzとxyを何らかの形に再形成してplot_surfaceで使用する必要がありますが、今はそうしません。私もmeshgridを試しましたが、plot_surfaceの正当なフォームにさまざまな形のデータをどのように変換するのか分かりませんでした。

x, y = np.mgrid[-5:5,-5:5] 

上記のようにmgridを使用すると、10x10のマトリックスが得られます。次に、私の関数を使って10x10行列に対応するz値を生成する必要がありますが、xとyを分解し、z値を生成し、z値を適切な形式で再フォーマットする方法を見つけることができませんでした。

ここでの大きな問題は、データを操作する知識がほとんどないため、このタスクを実行する良い方法が見つからないことです。したがって、pdf関数を使用してplot_surfaceのデータセットを生成する適切な方法を学びたいと思います。

私のpdf関数を使用してこのようにプロットするデータポイントを生成する良い方法はありますか?このnewBのお手伝いをありがとう!これらの方法に問題が何だった -

+1

*は*「私は上の関数meshgridと、arangeを試してみましたが、適切なデータ・ポイントを作成する方法を見つけることができませんでしたか」?あなたのコードを私たちに教えてください。 –

+0

@ali_m私が試したことを追加しました。ご協力いただきありがとうございます! – noclew

答えて

1

使用apply_along_axis

xy = np.stack(np.mgrid[-5:5,-5:5], axis=-1)  # xy[0,0] = x, y 
z = np.apply_along_axis(myPDF, axis=-1, arr=xy) # z[0,0] = myPDF(xy[0,0]) 
+0

うわーありがとう!!!!!! – noclew

+0

ところで、なぜ軸が-1ですか? – noclew

+0

ここでは実際には関係ありませんが、 'axis = -'は' x or y 'を最後の軸にして、 '(xij、yij)==(xy [i、j、0]、xy [ 1])== xy [i、j] 'である。別の軸を選ぶこともできますが、1と0は最後ではありません。 – Eric

関連する問題