我需要为具有常规/可变尺寸数的数组生成网格。在2D情况下,我知道我可以使用mgrid:
# Some 2D data
N = 1000
x = np.random.uniform(0., 1., N)
y = np.random.uniform(10., 100., N)
xmin, xmax, ymin, ymax = x.min(), x.max(), y.min(), y.max()
# Obtain 2D grid
xy_grid = np.mgrid[xmin:xmax:10j, ymin:ymax:10j]
尺寸尺寸可变时,如何缩放此方法?即:我的数据可能是(x, y)
或(x, y, z)
或(x, y, z, q)
,等等。
天真的方法:
# Md_data.shape = (M, N), for M dimensions
dmin, dmax = np.amin(Md_data, axis=1), np.amax(Md_data, axis=1)
Md_grid = np.mgrid[dmin:dmax:10j]
不起作用。
答案 0 :(得分:1)
我们可以使用列表理解遍历变量列表:x,y,z,q,etc.
以创建切片符号,然后将其简单地馈送到mgrid
-
L = [x,y,z,q] # list of variables
out = np.mgrid[[np.s_[A.min():A.max():10j] for A in L]]
使用slice
构造函数:
np.mgrid[[slice(A.min(),A.max(),10j) for A in L]]