0
n次元のmeshgridを作成しようとしています。 使用しているif節よりもn列ベクトルでmeshgridを呼び出す方法がありますか?numpyでのmeshgridの可変次元
編集:目標は100個のif節を書くことなく、ユーザー定義のn(2-100)に使用することです。
節はグリッドを減少させる場合の2行目そうカラム(N)<カラム(N + 1)
例:
import numpy as np
dimension = 2
range = np.arange(0.2,2.4,0.1)
if dimension == 2:
grid = np.array(np.meshgrid(range,range)).T.reshape(-1,dimension)
grid = np.array(grid[[i for i in range(grid.shape[0]) if grid[i,0]<grid[i,1]]])
elif dimension == 3:
grid = np.array(np.meshgrid(range,range,range)).T.reshape(-1,dimension)
grid = np.array(grid[[i for i in range(grid.shape[0]) if grid[i,0]<grid[i,1]]])
grid = np.array(grid[[i for i in range(grid.shape[0]) if grid[i,1]<grid[i,2]]])
編集:溶液は以下投稿されました:
dimension = 2
r = np.arange(0.2,2.4,0.1)
grid=np.array(np.meshgrid(*[r]*n)).T.reshape(-1,n)
for i in range(0,n-1):
grid = np.array([g for g in grid if g[i]<g[i+1]])
あなたは 'meshgrid(range、range)' v 'meshgrid(range、range、range)の気になりますか?私はあなたのコードの残りの部分が何をしているのか見ていません。 – hpaulj
[numpyに多次元バージョンのarange/linspaceがありますか?](http://stackoverflow.com/questions/32208359/is-there-a-multi-dimensional-version-of-arange-linspace -in-numpy) – farenorth
一般的に、ネイティブのpythonルーチンを上書きするのは悪い考えです。特に、 'range'のように便利です。 –