一般维数的多维网格

2024-04-25 15:21:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要为一个具有一般/可变维数的数组生成一个网格。在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]

不起作用。你知道吗


Tags: 方法datanprandomuniformminmdmax
1条回答
网友
1楼 · 发布于 2024-04-25 15:21:18

我们可以使用一个列表理解循环遍历变量列表: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]]

相关问题 更多 >