meshgrid【numpy】
2025.7.16 3Dグラフ【matplotlib】を使ってプロットするデータを生成するために利用される。pytorch に同名の関数があるが(meshgrid【torch】)、目的や使い方はnumpy版とほぼ同じである。
オーソドックスな使い方は、2つの1D-array likeなデータ列を与えることであろう。ここでは2つの1次元リストを与えている。
code:numpy_mg1.py
import numpy as np
x = 0, 2, 4, 6
y = 1, 3, 5
XX, YY = np.meshgrid(x, y)
print('# XX:\n', XX)
print('# YY:\n', YY)
'''
# XX:
[0 2 4 6
0 2 4 6
0 2 4 6]
# YY:
[1 1 1 1
3 3 3 3
5 5 5 5]
'''
第1引数ベクトルxの長さxl
第2引数ベクトルyの長さyl
とすると、
XXには、長さxlの横ベクトルxをタテにyl個並べた配列
YYには、長さylの縦ベクトルyをヨコにxl個並べた配列
が返される。
XX, YY の形状が揃っているので、これらを用いた計算(関数呼び出しも含む)は、ndarrayの element-wise operarion が行われ、計算結果には同じ形状の配列が得られる。
code:続き.py
ZZ1 = XX*2 + YY**2
'''
array([ 1, 5, 9, 13,
9, 13, 17, 21,
25, 29, 33, 37])
'''
code:続き.py
ZZ = func(XX, YY)
print('# ZZ:\n', ZZ)
'''
# ZZ:
[ 1 5 9 13
9 13 17 21
25 29 33 37]
'''
範囲指定のためのベクトルは linspace や arange を使って生成すると便利である。
code:p.py
import numpy as np
x = np.linspace(0, 5, 10) # 0~5の範囲を10刻み
y = np.arange(0, 5, 1) # 0~5の範囲を間隔1で
XX, YY = np.meshgrid(x, y)
print('# XX:\n', XX)
print('# YY:\n', YY)
2025.7.16 meshgrid【numpy】