Pythonで2次元メッシュを作る
Pythonで2次元のメッシュを作ります。メッシュと言っても、実際に作るのは行列です。3次元グラフを描く際の、各要素のX成分とY成分を準備するようなイメージです。
目次
numpy.meshgridメソッドの使い方
指定した行列ベクトルで、メッシュグリッドとなる行列を作ります。
import numpy as np
X1, X2 = np.meshgrid(x1, x2, [indexing], [sparse], [copy])
変数 |
型 |
内容 |
---|---|---|
x1, x2, ... |
array_like |
グリッドのもとになる1次元の行列。 |
indexing |
str |
省略可。規定値は'xy'。 |
sparse |
bool |
省略可。規定値はFalse。 |
copy |
bool |
省略可。規定値はTrue。 |
X1, X2, ... |
ndarray |
メッシュグリッドとなる行列。 |
ちょっとわかりにくいですね。
例を挙げてみます。
xが0から4まで、yが0から2までのメッシュグリッドを考えてみましょう。x方向に0から4までの数字を、y方向に0から2までの数字を入れます。
0 |
1 |
2 |
3 |
4 |
|
0 |
|||||
1 |
|||||
2 |
グリッドの各枡に、xの値とyの値を(x,y)のように入れてみます。
0 |
1 |
2 |
3 |
4 |
|
0 |
(0,0) |
(1,0) |
(2,0) |
(3,0) |
(4,0) |
1 |
(0,1) |
(1,1) |
(2,1) |
(3,1) |
(4,1) |
2 |
(0,2) |
(1,2) |
(2,2) |
(3,2) |
(4,2) |
この表から、xの部分と、yの部分を取り出します。
まずx部分。
0 |
1 |
2 |
3 |
4 |
0 |
1 |
2 |
3 |
4 |
0 |
1 |
2 |
3 |
4 |
そしてy部分。
0 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
2 |
2 |
2 |
2 |
2 |
はい、できあがりました。
これをどう使うかというと、z = f(x, y)というようなxとyの値によって決まるzが2次元の行列として得られる場合に、z[i, j]のxとy成分がx[i, j]とy[i,j]で得られるようになるわけです。 そうすると、3次元プロットなどするときにインデックスだけ指定すれば良いので便利なのですね。
メッシュグリッドの作成例
試してみましょう。
>>> import numpy as np
# xとyの作成
>>> x = np.linspace(0,5,5,False)
>>> x
array([0., 1., 2., 3., 4.])
>>> y = np.linspace(0,3,3,False)
>>> y
array([0., 1., 2.])
# メッシュグリッドの作成
>>> xx, yy = np.meshgrid(x,y)
>>> xx
array([[0., 1., 2., 3., 4.],
[0., 1., 2., 3., 4.],
[0., 1., 2., 3., 4.]])
>>> yy
array([[0., 0., 0., 0., 0.],
[1., 1., 1., 1., 1.],
[2., 2., 2., 2., 2.]])
はい、できました。
公開日
広告
Pythonの数値計算カテゴリの投稿
- NumPyで転置行列を取得する
- NumPyの定数
- Pythonで2つの行列の対応する要素の最大値の行列を作る
- Pythonで2次元メッシュを作る
- Pythonで値が一番大きい要素のインデックスを探す
- Pythonで値が一番小さい要素のインデックスを探す
- Pythonで指定した数値以上の最小の整数を計算する
- Pythonで等間隔の数字の列を作る
- Pythonで等間隔の数字の列を作る(arange編)
- Pythonで行列の次元を調べる
- Pythonで行列の積を計算する
- Pythonで零行列を作る
- PythonのNumPyの行列の書き換えを禁止したり許可したりする
- Pythonの行列のサイズを調べる