の目的はmeshgrid
、x 値の配列と y 値の配列から長方形のグリッドを作成することです。
したがって、たとえば、x 方向と y 方向の両方で 0 から 4 までの各整数値にポイントがあるグリッドを作成したい場合。長方形のグリッドを作成するには、x
とy
ポイントのすべての組み合わせが必要です。
これで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
これにより、次のx
行列y
が得られ、各行列の対応する要素のペアリングにより、グリッド内の点の 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')

x
明らかに、これは特にとの範囲が広い場合は非常に面倒y
です。代わりに、meshgrid
実際にこれを生成できます。指定する必要があるのは、一意の値x
とy
値だけです。
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)
の値の範囲で関数 ( ) をサンプリングする方法にすぎません。x
y
この関数は長方形のグリッドでサンプリングされているため、関数を「画像」として視覚化できます。

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