np.mgrid使用

01 功能

np.mgrid 用与生成具有“空间结构”的等差三维数组,比如下面代码,生成维度为 (2, 5, 5)。:

array3D = np.mgrid[-4: 0: 5j,
                         0: 4: 5j]
print(array3D.shape)
print(array3D)
(2, 5, 5)
[[[-4. -4. -4. -4. -4.]
  [-3. -3. -3. -3. -3.]
  [-2. -2. -2. -2. -2.]
  [-1. -1. -1. -1. -1.]
  [ 0.  0.  0.  0.  0.]]

 [[ 0.  1.  2.  3.  4.]
  [ 0.  1.  2.  3.  4.]
  [ 0.  1.  2.  3.  4.]
  [ 0.  1.  2.  3.  4.]
  [ 0.  1.  2.  3.  4.]]]

02 语法

语法格式如下:

np.mgrid[第1维,第2维,...]
dim = [start: end: step]

维度间用逗号分隔,第 i 维的写法存在两种情况:

  • a: b: c
    • c表示生成的数组元素之间的步长;
    • 数组区间为 [a, b)(左闭右开);
  • a: b: cj
    • cj表示生成的数组元素的个数;
    • 数组区间为[a, b](左闭又闭);

具体的用法,我们在后面实例部分讲解。

03 举例

  1. 一维数组

    # 在[0, 4)区间内生成数组,间隔为1 -> [0, 1, 2, 3]
    array1D = np.mgrid[0: 4: 1]
    # 在[0, 4]区间内生成数组,个数为5 -> [0, 1, 2, 3, 4]
    array1Dj = np.mgrid[0: 4: 5j]
    print(array1D)
    print(array1Dj)
    
    [0 1 2 3]
    [0. 1. 2. 3. 4.]
    

    需要注意的是,当 c > b - a 时,其不会生成有效的数组,默认为0:

    array1D = np.mgrid[0: 4: 5]
    print(array1D)
    
    [0]
    
  2. 两个二维数组

    对于生成的高维数组,我们应该这样来看:

    • 其会对数组沿其他维度进行复制拓展(x->y,y->x)
  • 两个数组再堆叠起来

    x,y = np.mgrid[-4: 0: 5j,
                    0: 4: 5j]
    
    print("x: \t", x.shape, "\n", x)
    print("y: \t", y.shape, "\n", y)
    
    x: 	 (5, 5) 
     [[-4. -4. -4. -4. -4.]
      [-3. -3. -3. -3. -3.]
      [-2. -2. -2. -2. -2.]
      [-1. -1. -1. -1. -1.]
      [ 0.  0.  0.  0.  0.]]
    
    y: 	 (5, 5) 
     [[0. 1. 2. 3. 4.]
      [0. 1. 2. 3. 4.]
      [0. 1. 2. 3. 4.]
      [0. 1. 2. 3. 4.]
      [0. 1. 2. 3. 4.]]
    

    生成的数组将其进行拆分即两个 5 x 5 的矩阵,其沿令外一个维度的方向进行复制拓展。

04 用途

对于更高维的数组,我们结合它常见的应用三维绘图,具体的参考:<python笔记:np.mgrid的用法>

posted @ 2020-07-23 12:58  疯狂的荷兰人  阅读(1975)  评论(0编辑  收藏  举报