次回より『ヒデログ』とご検索ください

【Python入門】Numpyのmeshgrid関数/配列の要素から格子点を生成

PythonのNumpyライブラリのmeshgrid関数の使い方についてソースコードで解説します。meshgrid関数は格子点を生成する関数です。

ひでひろ
meshgridは格子点を生成する際に便利な関数だよ!

Numpy.meshgridの活用法

Numpy.meshgrid(x_1,x_2,...,x_n)x_iはベクトルを取り、n次元の配列を戻り値としています。

numpy.meshgrid— SciPy.org Numpy Manual

ひでひろ
実際のソースコードを見ていきましょう。
import numpy as np

# 間隔を1にするベクトル生成
x=np.arange(-2,2,1)
y=np.arange(-3,3,1)
xm,ym=np.meshgrid(x,y)
zm=xm2+ym2

print(xm)
print(ym)
print(zm)
実行結果
# xm
array([[-2, -1,  0,  1],
       [-2, -1,  0,  1],
       [-2, -1,  0,  1],
       [-2, -1,  0,  1],
       [-2, -1,  0,  1],
       [-2, -1,  0,  1]])

# ym
array([[-3, -3, -3, -3],
       [-2, -2, -2, -2],
       [-1, -1, -1, -1],
       [ 0,  0,  0,  0],
       [ 1,  1,  1,  1],
       [ 2,  2,  2,  2]])

# zm(=xm+ym)
array([[-5, -4, -3, -2],
       [-4, -3, -2, -1],
       [-3, -2, -1,  0],
       [-2, -1,  0,  1],
       [-1,  0,  1,  2],
       [ 0,  1,  2,  3]])

Numpy.arange関数の使い方は以下の記事を参照してください。
【Python入門】3分で分かるNumpyで配列を作る方法

コード解説

x,ynumpy.arange関数からベクトルを生成され、meshgrid関数の引数となり2次元の配列を戻り値とします。この時、戻り値は以下の行列になります。

行列の可視化

xm,ymがとる範囲をベクトルで与えると、全格子点の座標が行列で生成される。xmが行ベクトル、ymが列ベクトルを形成している。

y|x -2 -1 0 1 2
-3 (-3,-2) (-3,-1) (-3,0) (-3,1) (-3,2)
-2 (-2,-2) (-2,-1) (-2,0) (-2,1) (-2,2)
-1 (-1,-2) (-1,-1) (-1,0) (-1,1) (-1,2)
0 (0,-2) (0,-1) (0,0) (0,1) (0,2)
1 (1,-2) (1,-1) (1,0) (1,1) (1,2)
2 (2,-2) (2,-1) (2,0) (2,1) (2,2)
3 (3,-2) (3,-1) (3,0) (3,1) (3,2)
import matplotlib.pyplot as plt
plt.imshow(zm)
plt.colorbar()
plt.title("${x+y}$")
実行結果
meshgrid

全格子点の間隔を狭めた結果

先ほどの例では間隔は「1」でしたが、以下の例では間隔を「0.01」にしています。

import numpy as np
import matplotlib.pyplot as plt

# 間隔を0.01に
x=np.arange(-2,2,0.01)
y=np.arange(-3,3,0.01)
xm,ym=np.meshgrid(x,y)
zm=xm+ym

plt.imshow(zm)
plt.colorbar()
plt.title("${x+y}$")
実行結果
meshgrid

まとめ

Pythonでmeshgrid関数の使い方についてソースコードで解説しました。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です