How to create multidimensional array with numpy.mgrid
grid, multidimensional-array, numpy, python
Solution
You might use
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)
Note that `np.ogrid` can be used in many places where `np.mgrid` is used, and it requires less memory because the arrays are smaller.
Problem
I wonder how to create a grid (multidimensional array) with numpy mgrid for an unknown number of dimensions (D), each dimension with a lower and upper bound and number of bins: ``` 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)] ``` I guess above doesn't work, since mgrid creates array of indices not values. But how to use it to create array of values. Thanks Aso.agile