1. ホーム
  2. python

[解決済み] Python / NumPyのmeshgridは何のためにあるのですか?

2022-03-22 12:14:06

質問

の目的は何なのか、どなたか教えてください。 meshgrid という関数があります。プロットするための座標のグリッドのようなものを作成するのは知っていますが、その直接的な利点がよくわかりません。

私はSebastian Raschkaから "Python Machine Learning" を学んでいますが、彼は決定境界をプロットするためにこれを使用しているようです。入力11を参照 こちら .

公式ドキュメントにあるこのコードも試してみましたが、やはり、出力は私にはあまり意味をなさないようです。

x = np.arange(-5, 5, 1)
y = np.arange(-5, 5, 1)
xx, yy = np.meshgrid(x, y, sparse=True)
z = np.sin(xx**2 + yy**2) / (xx**2 + yy**2)
h = plt.contourf(x,y,z)

できれば、実例もたくさん見せてください。

どのように解決するのですか?

の目的は meshgrid は、x 値の配列と y 値の配列から矩形のグリッドを作成するものです。

そこで、例えば、x方向、y方向ともに0から4の各整数値に点があるようなグリッドを作りたい場合。矩形のグリッドを作るには xy ポイントになります。

これは25点になるんですよね?そこで、これらの点すべてについてxとyの配列を作りたい場合、次のようになります。 できる は次のようにします。

x[0,0] = 0    y[0,0] = 0
x[0,1] = 1    y[0,1] = 0
x[0,2] = 2    y[0,2] = 0
x[0,3] = 3    y[0,3] = 0
x[0,4] = 4    y[0,4] = 0
x[1,0] = 0    y[1,0] = 1
x[1,1] = 1    y[1,1] = 1
...
x[4,3] = 3    y[4,3] = 4
x[4,4] = 4    y[4,4] = 4

この場合、以下のようになります。 xy の行列があり,それぞれの行列の対応する要素の組が,格子点における点の x 座標と y 座標を与える.

x =   0 1 2 3 4        y =   0 0 0 0 0
      0 1 2 3 4              1 1 1 1 1
      0 1 2 3 4              2 2 2 2 2
      0 1 2 3 4              3 3 3 3 3
      0 1 2 3 4              4 4 4 4 4

そして、これらをプロットして、グリッドであることを確認することができます。

plt.plot(x,y, marker='.', color='k', linestyle='none')

明らかに、これは特に大きな範囲の xy . 代わりに meshgrid を指定するだけで、実際にこれを生成することができます。 xy の値を指定します。

xvalues = np.array([0, 1, 2, 3, 4]);
yvalues = np.array([0, 1, 2, 3, 4]);

ここで meshgrid のように、自動的に前の出力が得られます。

xx, yy = np.meshgrid(xvalues, yvalues)

plt.plot(xx, yy, marker='.', color='k', linestyle='none')

このような長方形のグリッドを作成することは、さまざまな作業に役立ちます。あなたの投稿にある例では、単に関数のサンプルとして( sin(x**2 + y**2) / (x**2 + y**2) の値の範囲に亘る) xy .

この関数は矩形グリッドでサンプリングされているので、関数を画像として視覚化することができます。

さらに、矩形グリッド上のデータを期待する関数に結果を渡すことができるようになりました (例. contourf )