zoukankan      html  css  js  c++  java
  • 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的用法>

    飞翔的荷兰人 邮箱:fly_cjb@163.com
  • 相关阅读:
    J2EE技术(一)——JNDI
    软考注定是一次伤痛
    Ultraedit使用技巧收集
    ArcGIS Server Java 自定义Functionality(转)
    用C#动态刷新KML
    ArcGIS Server Java 自定义task
    Python动态刷新kml
    投影坐标知识小结
    tomcat配置数据源通过JNDI访问mysql数据库
    ArcGIS Server Java自定义tool
  • 原文地址:https://www.cnblogs.com/FLYMANJB/p/13365705.html
Copyright © 2011-2022 走看看