【问题标题】:Multi dimensional grid for general number of dimensions用于一般维数的多维网格
【发布时间】:2018-11-06 17:49:37
【问题描述】:

我需要为具有一般/可变维数的数组生成网格。在二维情况下,我知道我可以使用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]

不工作。

【问题讨论】:

    标签: python numpy multidimensional-array


    【解决方案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]]
    

    【讨论】:

      猜你喜欢
      • 2015-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-02
      • 1970-01-01
      相关资源
      最近更新 更多