6

未知の次元数(D)に対して、numpy mgridを使用してグリッド(多次元配列)を作成する方法を知りたいと思います。各次元には、下限と上限、およびビンの数があります。

n_bins =  numpy.array([100 for  d in numpy.arrange(D)])
bounds = numpy.array([(0.,1) for d in numpy.arrange(D)])
grid = numpy.mgrid[numpy.linspace[(numpy.linspace(bounds(d)[0], bounds(d)[1], n_bins[d] for d in numpy.arrange(D)]

mgridは値ではなくインデックスの配列を作成するため、上記は機能しないと思います。しかし、それを使用して値の配列を作成する方法。

ありがとう

Aso.agile

4

1 に答える 1

6

あなたが使うかもしれない

np.mgrid[[slice(row[0], row[1], n*1j) for row, n in zip(bounds, n_bins)]]

import numpy as np
D = 3
n_bins =  100*np.ones(D)
bounds = np.repeat([(0,1)], D, axis = 0)

result = np.mgrid[[slice(row[0], row[1], n*1j) for row, n in zip(bounds, n_bins)]]
ans = np.mgrid[0:1:100j,0:1:100j,0:1:100j]

assert np.allclose(result, ans)

np.ogridが使用される多くの場所で使用できることに注意してくださいnp.mgrid。また、配列が小さいため、必要なメモリが少なくて済みます。

于 2012-11-24T15:34:46.047 に答える