格子の生成
3次元グラフの描画にも使われるnumpy.meshgrid()
の動作の概要をまとめる。indexing
やsparse
といった引数については、別の機会に。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
import numpy as np x = np.linspace(-2, 2, 5) y = np.linspace(-1, 1, 3) print("x=:\n{}".format(x)) print("y=:\n{}".format(y)) x, y = np.meshgrid(x, y) print("x=:\n{}".format(x)) print("y=:\n{}".format(y)) # x=: # [-2. -1. 0. 1. 2.] # y=: # [-1. 0. 1.] # x=: # [[-2. -1. 0. 1. 2.] # [-2. -1. 0. 1. 2.] # [-2. -1. 0. 1. 2.]] # y=: # [[-1. -1. -1. -1. -1.] # [ 0. 0. 0. 0. 0.] # [ 1. 1. 1. 1. 1.]] |
x, y
がとる範囲を与えると、全格子点の座標が生成される。x
が列、y
が行を表すカウンターとみると、その内容は以下のようになる。
y|x | -2 | -1 | 0 | 1 | 2 |
-1 | (-2, -1) | (-1, -1) | (0, -1) | (1, -1) | (2, -1) |
0 | (-2, 0) | (-1, 0) | (0, 0) | (1, 0) | (2, 0) |
1 | (-2, 1) | (-1, 1) | (0, 1) | (1, 1) | (2, 1) |
各格子点位置のx, yの値が各配列の要素に合っていることが確認できる。
格子点座標による演算
生成された格子座標に演算を施したり関数に適用すると、各格子点位置の値が計算される。
1 2 3 4 5 6 7 |
z = x*x + y*y print("z=:\n{}".format(z)) # z=: # [[5. 2. 1. 2. 5.] # [4. 1. 0. 1. 4.] # [5. 2. 1. 2. 5.]] |