• 数组的组合


    Numpy数组有水平组合、垂直组合和深度组合等多种组合方式,我们将使用vstack、dstack、hstack、column_stack、row_stack以及concatenate函数来完成数组的组合。

    创建一些数组:

    import numpy as np

    a = np.arange(9).reshape(3,3)
    print('原始数组:',a)
    b = 2 * a
    print('乘2后的数组:',b)

    运行结果:
       

    #(1)水平组合,将ndarray对象构成的元组作为参数,传给 hstack函数。如下所示:
    c = np.hstack((a,b))
    print("组合后的数组: ",c)
    运行结果:

    # 我们也可以用concatenate函数来实现同样的效果,如下所示:
    c = np.concatenate((a,b),axis=1)
    print("组合后的数组: ",c)
    运行结果:

    # (2) 垂直组合 垂直组合同样需要构造一个元组作为参数,只不过这次的函数变成了 vstack。如下所示:
    c = np.vstack((a,b))
    print("组合后的数组: ",c)
    运行结果:
     

    # 同样,我们将concatenate函数的axis参数设置为0即可实现同样的效果。这也是axis参 数的默认值:
    c = np.concatenate((a,b),axis=0)
    print("组合后的数组: ",c)
    运行结果:

    (3) 深度组合 将相同的元组作为参数传给dstack函数,即可完成数组的深度组合。所谓
    深度组合,就是将一系列数组沿着纵轴(深度)方向进行层叠组合。举个例子,有若干张二维平 面内的图像点阵数据,我们可以将这些图像数据沿纵轴方向层叠在一起,这就形象地解释了什么 是深度组合。
    '''
    c = np.dstack((a,b))
    print("组合后的数组: ",c)
    运行结果:

    # (4)列组合 column_stack函数对于一维数组将按列方向进行组合,如下所示:
    oned = np.arange(2)
    print('原始数组: ',oned)

    twice_oned = 2 * oned
    print('乘2后的数组: ',twice_oned)

    print("列组合后的数组: ",np.column_stack((oned,twice_oned)))
    运行结果:

    而对于二维数组,column_stack与hstack的效果是相同的:

    print("二维数组列组合:
    ",np.column_stack((a,b)))
    print("column_stack组合与hstack组合相等: ",np.column_stack((a,b)) == np.hstack((a,b)))

    运行结果:

    (5) 行组合 当然,NumPy中也有按行方向进行组合的函数,它就是row_stack。对于两个一维数组,将直接层叠起来组合成一个二维数组。

    oned = np.arange(2)
    print('原始数组: ',oned)

    twice_oned = 2 * oned
    print('乘2后的数组: ',twice_oned)

    c = np.row_stack((oned,twice_oned))
    print("行组合后的数组: ",c)
    运行结果:

    对于二维数组,row_stack与vstack的效果是相同的:

    print("二维数组行组合:
    ",np.row_stack((a,b)))
    print("row_stack组合与vstack组合相等: ",np.row_stack((a,b)) == np.vstack((a,b)))
    运行结果:

  • 相关阅读:
    第61课 智能指针类模板
    第60课 数组类模板
    第59课 类模板深度剖析
    第58课 类模板的概念和意义
    第57课 深入理解函数模板
    第56课 函数模板的概念和意义
    第55课 经典问题解析(四)
    155. Min Stack
    141. Linked List Cycle
    136. Single Number
  • 原文地址:https://www.cnblogs.com/jerryspace/p/10023127.html
Copyright © 2020-2023  润新知