代码之家  ›  专栏  ›  技术社区  ›  Gabriel

一般维数的多维网格

  •  1
  • Gabriel  · 技术社区  · 6 年前

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

    1 回复  |  直到 6 年前
        1
  •  1
  •   Divakar    6 年前

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