1. ホーム
  2. python

[解決済み] numpyのarange/linspaceの多次元バージョンはありますか?

2023-01-21 14:24:01

質問

2次元のNumPy配列 (x,y) のリストが欲しいのですが、各xは {-5, -4.5, -4, -3.5, ..., 3.5, 4, 4.5, 5} で、yについても同じです。

とすることができました。

x = np.arange(-5, 5.1, 0.5)
y = np.arange(-5, 5.1, 0.5)

で、可能なペアをすべて反復処理するのですが、もっといい方法があると思うのですが......。

のような感じで返して欲しいです。

[[-5, -5],
 [-5, -4.5],
 [-5, -4],
 ...
 [5, 5]]

のようになりますが、順番は関係ありません。

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

あなたは np.mgrid よりも便利な場合があります。 np.meshgrid の方が便利です。

import numpy as np
X,Y = np.mgrid[-5:5.1:0.5, -5:5.1:0.5]

linspaceのような機能を実現するためには、ステップを置き換える(つまり 0.5 ) を 複素数 で、その大きさは、系列にしたい点の数を指定します。この構文を使うと、上記と同じ配列が次のように指定されます。

X, Y = np.mgrid[-5:5:21j, -5:5:21j]


として、ペアを作成することができます。

xy = np.vstack((X.flatten(), Y.flatten())).T

ali_mが提案したように、これはすべて一行で行うことができます。

xy = np.mgrid[-5:5.1:0.5, -5:5.1:0.5].reshape(2,-1).T

幸運を祈ります。