numpyのmeshgridの基本的な使い方

numpy meshgridの基本的に使い方と解説

numpy のmeshgridの基本的な使い方を解説します。

meshgrid を用いることで、1次元配列から格子状の座標を簡単に作成することができます。
まぁ例を見たほうが理解しやすいと思うのでサンプルコードをお見せします。
ちなみに、これ以降のコードはnumpyとmatplotlibをimportしていることが前提となります。

import numpy as np
import matplotlib.pyplot as plt

2つの配列(x=[0, 3, 6], y=[0, 3, 6])をmethgridに与えた時の結果は以下のようになります。

In [2]: x = [0,3,6]
In [3]: y = [0,3,6]
In [4]: X,Y = np.meshgrid(x,y)
In [5]: X
Out[5]: 
array([[0, 3, 6],
       [0, 3, 6],
       [0, 3, 6]])
In [6]: Y
Out[6]: 
array([[0, 0, 0],
       [3, 3, 3],
       [6, 6, 6]])

meshgridによって座標を作成できています。
(例えば(X[0], Y[0])=(0, 0))
簡単に図で説明してみるとXは以下のような配列を生成していることがわかります。

f:id:ttt242242:20190813055049p:plain

Yに関しても同様です。

このX, Yを用いることで以下のような図を簡単に作成することができます。

In [7]: fig, ax = plt.subplots()
In [8]: ax.scatter(X, Y)
Out[8]: <matplotlib.collections.PathCollection at 0x7ffb74677e10>

f:id:ttt242242:20190811053502p:plain

ついでにアノテーションも着けたバージョンも

In [9] : for x1 in x:
    ...:     for y1 in y:
    ...:         ax.annotate("({}, {})".format(x1, y1),(x1, y1))

f:id:ttt242242:20190811053515p:plain

参考文献

[https://docs.scipy.org/doc/numpy/reference/generated/numpy.meshgrid.html:title]

コメント

タイトルとURLをコピーしました