1. ホーム
  2. python

[解決済み] Pythonのメッシュグリッド関数 (meshgrid mgrid ogrid ndgrid)

2023-07-09 02:45:53

質問

メッシュグリッドのような関数の明確な比較を探しています。残念ながら、私はそれを見つけることができません!

Numpy http://docs.scipy.org/doc/numpy/reference/ が提供する

  • mgrid

  • ogrid

  • meshgrid

スキットツール http://hplgit.github.io/scitools/doc/api/html/index.html が提供する

  • ndgrid

  • boxgrid

理想を言えば、これらすべてをまとめた表があれば完璧です!

どのように解決するのですか?

numpy.meshgrid は、Matlabの meshgrid コマンドを模したものです。これは2変数の関数をベクトル化するために使用され,次のように書くことができます.

x = numpy.array([1, 2, 3])
y = numpy.array([10, 20, 30]) 
XX, YY = numpy.meshgrid(x, y)
ZZ = XX + YY

ZZ => array([[11, 12, 13],
             [21, 22, 23],
             [31, 32, 33]])

そこで ZZ の全ての組み合わせが含まれます。 xy を関数に入れる。それを考えると meshgrid はnumpyの配列ではブロードキャストするため、少し余計です。つまり、次のようなことができるのです。

XX, YY = numpy.atleast_2d(x, y)
YY = YY.T # transpose to allow broadcasting
ZZ = XX + YY

で、同じ結果を得ることができます。

mgrid そして ogrid はインデックス表記を使用したヘルパークラスで XXYY のようなものを使わなくても、前の例で直接 linspace . 出力される順番は逆になっています。

YY, XX = numpy.mgrid[10:40:10, 1:4]
ZZ = XX + YY # These are equivalent to the output of meshgrid

YY, XX = numpy.ogrid[10:40:10, 1:4]
ZZ = XX + YY # These are equivalent to the atleast_2d example

scitoolsのことはよく知りませんが ndgrid と同等と思われます。 meshgrid と同等に見えますが BoxGrid は実際にはこの種の生成を支援するためのクラス全体です。