zoukankan      html  css  js  c++  java
  • Python学习笔记:np.ogrid、np.mgrid产生多维数组

    np.ogridnp.mgrid 函数相似,都是返回一个多维的 meshgrid, 区别是 ogrid 返回开放式,mgrid 返回密集式数组。

    而数组中的元素依据 arange 方法来产生。

    • 参数部分需要传入一个列表,例如:[a, b, step] ( a 表示起点,b 表示终点,step 表示步长,步长参数缺省默认为1)

    一、ogrid函数

    np.ogrid 函数作为产生 numpy 数组与 arange 函数有点类似,不同的是:

    • arange 产生一维数组,ogrid 产生二维数组
    • arange 产生一个数组,ogrid 产生两个数组
    • ogrid 产生的数组,第一个数组是纵向产生的,即数组第二维大小始终是1。第二个数组是横向产生的,即数组的第一维大小始终是1。

    1.整数步长

    整数步长直接生成2个数组。

    x, y = np.ogrid[0:10:1, 0:10:2] # 步长分别为1、2
    print(x)
    print(y)
    '''
    [[0]
     [1]
     [2]
     [3]
     [4]
     [5]
     [6]
     [7]
     [8]
     [9]] (10, 1)
    [[0 2 4 6 8]] (1, 5)
    '''
    

    2.复数步长

    复数步长的设置是通过 j 进行设置的,如:5j,表示的是,用几个数值来等分整个区间。

    x, y = np.ogrid[0:10:6j, 0:10:4j]
    print(x, np.shape(x))
    print(y, np.shape(y))
    '''
    [[ 0.]
     [ 2.]
     [ 4.]
     [ 6.]
     [ 8.]
     [10.]] (6, 1)
    [[ 0.          3.33333333  6.66666667 10.        ]] (1, 4)
    '''
    

    二、mgrid函数

    np.mgrid 函数最终返回两个数组,维度都是 n * m, 生成的第一个数组是依照列表中第一个元素生成,对列进行扩展重复;另外一个数组是根据列表中第二个元素生成,对行进行扩展重复。

    np.mgrid[1:20:5, 0:8:1]
    '''
    array([[[ 1,  1,  1,  1,  1,  1,  1,  1],
            [ 6,  6,  6,  6,  6,  6,  6,  6],
            [11, 11, 11, 11, 11, 11, 11, 11],
            [16, 16, 16, 16, 16, 16, 16, 16]],
    
           [[ 0,  1,  2,  3,  4,  5,  6,  7],
            [ 0,  1,  2,  3,  4,  5,  6,  7],
            [ 0,  1,  2,  3,  4,  5,  6,  7],
            [ 0,  1,  2,  3,  4,  5,  6,  7]]])
    '''
    

    应用对比

    x, y = np.ogrid[:3, :4]
    np.where(x < y, x, y+10)
    '''
    array([[10,  0,  0,  0],
           [10, 11,  1,  1],
           [10, 11, 12,  2]])
    '''
    

    参考链接:numpy的ogrid详细介绍

    参考链接:np.ogrid 用法

  • 相关阅读:
    YOLO V5
    YOLO系列(单阶段目标检测)
    优化算法
    算法总结
    图像分类算法
    ResNet网络(里程碑)
    GoogleNet网络(纵横交错)
    VGGNet网络(走向深度)
    AlexNet网络(开山之作)
    案例
  • 原文地址:https://www.cnblogs.com/hider/p/15356845.html
Copyright © 2011-2022 走看看