Python
 Computer >> コンピューター >  >> プログラミング >> Python

Python – numpy.meshgrid()関数の使い方と実例解説

numpy.meshgrid()は、1次元の座標ベクトルから2次元(または多次元)の座標行列を生成して返すNumPyの関数です。グラフ描画やグリッド上での数値計算など、幅広い場面で活用されます。

基本的な構文は以下の通りです。

numpy.meshgrid(*xi, **kwargs)

主なパラメータ

meshgrid()で指定できる引数は以下の通りです。

  • x1, x2, …, xn − グリッドを構成する各軸の座標値を持つ1次元配列です。

  • indexing − 出力される座標行列のインデックス方式を指定するオプション引数です。デフォルトは直交座標系の'xy'で、'ij'を指定すると行列形式のインデックスになります。

  • sparse − メモリ消費を抑えるためにスパース(疎)なグリッドを使用したい場合はTrueを設定します。デフォルトはFalseです。

  • copyTrueを指定すると、元の配列のコピーを返し、ビューではなく独立した配列として扱えます。デフォルトはFalseです。

使用例1:sparse=Trueによるスパースグリッドの生成

まず、sparseオプションを使ったシンプルな例を見てみましょう。

# NumPyをインポート
import numpy as np

# 入力配列
x = np.array([1,2,3,4,5])
y = np.array([11, 12, 13, 14, 15])
print("Input x :\n", x)
print("Input y :\n", y)

# meshgrid()関数
xx, yy = np.meshgrid(x, y, sparse=True)
print("Meshgrid of X:", xx)
print("Meshgrid of Y:\n", yy)

出力結果

このコードを実行すると、以下の出力が得られます。

Input x :
 [1 2 3 4 5]
Input y :
 [11 12 13 14 15]
Meshgrid of X: [[1 2 3 4 5]]
Meshgrid of Y:
 [[11]
 [12]
 [13]
 [14]
 [15]]

sparse=Trueを指定した場合、X方向の座標は1行の配列に、Y方向の座標は1列の配列に圧縮され、通常のフルサイズのグリッドよりも大幅にメモリを節約できます。

使用例2:linspaceとの組み合わせ

次に、linspace()で生成した等間隔の数値列をmeshgrid()に渡す例を紹介します。この例は、両者の違いもよく表しています。

# NumPyをインポート
import numpy as np

# linspace関数
a = np.linspace(3, 4, 4)
b = np.linspace(4, 5, 6)
print("linspace of a :", a)
print("linspace of b :", b)

# meshgrid関数
xa, xb = np.meshgrid(a, b)
print("Meshgrid of xa :\n", xa)
print("Meshgrid of xb :\n", xb)

出力結果

上記のプログラムを実行すると、以下の出力が得られます。

linspace of a : [3.         3.33333333 3.66666667 4.        ]
linspace of b : [4. 4.2 4.4 4.6 4.8 5. ]
Meshgrid of xa :
 [[3.         3.33333333 3.66666667 4.        ]
 [3.         3.33333333 3.66666667 4.        ]
 [3.         3.33333333 3.66666667 4.        ]
 [3.         3.33333333 3.66666667 4.        ]
 [3.         3.33333333 3.66666667 4.        ]
 [3.         3.33333333 3.66666667 4.        ]]
Meshgrid of xb :
 [[4. 4. 4. 4. ]
 [4.2 4.2 4.2 4.2]
 [4.4 4.4 4.4 4.4]
 [4.6 4.6 4.6 4.6]
 [4.8 4.8 4.8 4.8]
 [5. 5. 5. 5. ]]

このように、linspace()は指定範囲を等間隔に分割した1次元配列を作るのに対し、meshgrid()はそれらを組み合わせて格子状の座標行列を生成します。xaにはaの値が行方向に繰り返され、xbにはbの値が列方向に繰り返された行列が出力されていることが分かります。

  1. Pythonで解く4Sum II|4つのリストから合計が0になる組み合わせを数える方法

    問題の概要 整数値を持つ4つのリスト A、B、C、D が与えられたとき、A[i] + B[j] + C[k] + D[l] がゼロになるようなタプル (i, j, k, l) の個数を求めるのがこの問題です。 すべてのリストは同じ長さ N(0 ≤ N ≤ 500)を持ち、各整数は −228 から 228 − 1 の範囲に収まります。また、答えは最大でも 231 − 1 であることが保証されています。 具体例 たとえば、入力が A = [1, 2]、B = [-2, -1]、C = [-1, 2]、D = [0, 2] の場合、出力は 2 になります。条件を満たすタプルは次の2つです。 (0,

  2. Windows 10にNumPyをインストールする方法【初心者向け完全ガイド】

    Pythonで最も人気があり広く知られているライブラリのひとつがNumPy(ナンパイ)です。NumPyはPythonプログラミング言語向けのオープンソースライブラリで、科学技術計算やn次元配列の操作に幅広く活用されています。線形代数ルーチンや数学関数など、配列を扱うための高機能なツールを数多く提供しており、Pythonの拡張モジュールとして動作します。スクリプトをダウンロードして拡張機能やヘッダーファイルとして使うイメージに近い存在です。 本記事では、Windows環境にNumPyをインストールする具体的な手順を、初心者にもわかりやすく詳しく解説していきます。 Windows 10にNumP