しばらく頭を悩ませていたのですが、ようやく Python が使う行順との違いと、デカルト平面での座標の定義を理解することができました。簡単ですが、初心者や失読症の人にとっては混乱を招く可能性があるため、ここに記載します.
指摘されているように、これはnp.meshgridの動作に非常に似ています。この質問の理由は、デカルト平面を行列形式に変換するという考え方を平易な言葉で説明するためです。
左下に点 pos_inf があり、座標が pos_inf = (x_inf, y_inf) で、右上に点 pos_sup (x_sup, y_sup) がある平面があるとします。 x 方向と y 方向)、各方向の離散化点の数は次のようになります。
points_x = int((x_sup - x_inf) / h)
points_y = int((y_sup - y_inf) / h)
このグリッドの各ポイントに関数の値を格納したいとしましょう。サイズの行列を生成します
a = np.zeros((points_y, points_x))
Python の右端のインデックス、a[i,j] の j は、同じ行の要素を points_x 回通過することに注意してください。一番左のインデックスである i は、列数 points_y を通過します。for ループは次の式で与えられます。
for i in xrange(points_y):
for j in xrange(points_x):
a[i,j] = i
このように、x 方向の点はインデックス j に対応し、y 方向の点はインデックス i に対応します。したがって、たとえば、points_x = 5 および points_y = 6 の場合、x_inf=0 から x_sup=5 および y_inf = 0 から y_sup = 6 で始まる、h = 1 で離散化されたデカルト空間は次のようになります。
a = np.zeros((5,6))
for i in xrange(5):
for j in xrange(6):
a[i,j] = i
array([[ 0., 0., 0., 0., 0., 0.],
[ 1., 1., 1., 1., 1., 1.],
[ 2., 2., 2., 2., 2., 2.],
[ 3., 3., 3., 3., 3., 3.],
[ 4., 4., 4., 4., 4., 4.]])
このグラフは方向を示しています。