• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    numpy数组合并和矩阵拼接的实现

    Numpy中提供了concatenate,append, stack类(包括hsatck、vstack、dstack、row_stack、column_stack),r_和c_等类和函数用于数组拼接的操作。

    各种函数的特点和区别如下标:

    concatenate 提供了axis参数,用于指定拼接方向
    append 默认先ravel再拼接成一维数组,也可指定axis
    stack 提供了axis参数,用于生成新的维度
    hstack 水平拼接,沿着行的方向,对列进行拼接
    vstack 垂直拼接,沿着列的方向,对行进行拼接
    dstack 沿着第三个轴(深度方向)进行拼接
    column_stack 水平拼接,沿着行的方向,对列进行拼接
    row_stack 垂直拼接,沿着列的方向,对行进行拼接
    r_ 垂直拼接,沿着列的方向,对行进行拼接
    c_ 水平拼接,沿着行的方向,对列进行拼接

    直接合并

    将两个一维数组合并成一个二维数组:

    import torch
    import numpy as np
    import matplotlib.pyplot as plt
    a = np.arange(0,15,0.1)
    b = 1.088 * a + 0.638 + np.random.rand() * 10
    
    print(a.shape,b.shape)
    points = np.array([a,b])
    print(points.shape)
    
    
    (150,) (150,)
    (2, 150)
    

    append拼接

    append(arr, values, axis=None)

    arr 待合并的数组的复制(特别主页是复制,所以要多耗费很多内存)
    values 用来合并到上述数组复制的值。如果指定了下面的参数axis的话,则这些值必须和arr的shape一致(shape[axis]之外都相等),否则的话,则没有要求。
    axis 要合并的轴.

    >>> import numpy as np
    >>> ar1 = np.array([[1,2,3], [4,5,6]])
    >>> ar2 = np.array([[7,8,9], [11,12,13]])
    
    >>> np.append(ar1, ar2) # 先ravel扁平化再拼接,所以返回值为一个1维数组
    array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13])
    
    >>> np.append(ar1, ar2, axis=0)  # 沿第一个轴拼接,这里为行的方向 
    array([[ 1, 2, 3],
      [ 4, 5, 6],
      [ 7, 8, 9],
      [11, 12, 13]])
    
    >>> np.append(ar1, ar2, axis=1)  # 沿第二个轴拼接,这里为列的方向 
    array([[ 1, 2, 3, 7, 8, 9],
      [ 4, 5, 6, 11, 12, 13]])
    

    concatenate拼接

    concatenate(a_tuple, axis=0, out=None)
    

    a_tuple: 对需要合并的数组用元组的形式给出
    axis 待合并的轴,默认为0

     >>> import numpy as np
    >>> ar1 = np.array([[1,2,3], [4,5,6]])
    >>> ar2 = np.array([[7,8,9], [11,12,13]])
    >>> ar1
    array([[1, 2, 3],
      [4, 5, 6]])
    >>> ar2
    array([[ 7, 8, 9],
      [11, 12, 13]])
    
    >>> np.concatenate((ar1, ar2)) # 这里的第一轴(axis 0)是行方向
    array([[ 1, 2, 3],
      [ 4, 5, 6],
      [ 7, 8, 9],
      [11, 12, 13]])
    
    >>> np.concatenate((ar1, ar2),axis=1) # 这里沿第二个轴,即列方向进行拼接
    array([[ 1, 2, 3, 7, 8, 9],
      [ 4, 5, 6, 11, 12, 13]])
    
    >>> ar3 = np.array([[14,15,16]]) # shape为(1,3)的2维数组
    >>> np.concatenate((ar1, ar3)) # 一般进行concatenate操作的array的shape需要一致,当然如果array在拼接axis方向的size不一样,也可以完成
    >>> np.concatenate((ar1, ar3)) # ar3虽然在axis0方向的长度不一致,但axis1方向上一致,所以沿axis0可以拼接
    array([[ 1, 2, 3],
      [ 4, 5, 6],
      [14, 15, 16]])
    >>> np.concatenate((ar1, ar3), axis=1) # ar3和ar1在axis0方向的长度不一致,所以报错
    
    

    hstack

    >>> np.hstack((ar1,ar2)) # 水平拼接,沿着行的方向,对列进行拼接
    array([[ 1, 2, 3, 7, 8, 9],
      [ 4, 5, 6, 11, 12, 13]])
    
    

    vstack

    >>> np.vstack((ar1,ar2)) # 垂直拼接,沿着列的方向,对行进行拼接
    array([[ 1, 2, 3],
      [ 4, 5, 6],
      [ 7, 8, 9],
      [11, 12, 13]])
    

    vstack

    >>> np.dstack((ar1,ar2)) # 对于2维数组来说,沿着第三轴(深度方向)进行拼接, 效果相当于stack(axis=-1)
    array([[[ 1, 7],
      [ 2, 8],
      [ 3, 9]],
      [[ 4, 11],
      [ 5, 12],
      [ 6, 13]]])

    column_stack和row_stack

    >>> np.column_stack((ar1,ar2)) # 水平拼接,沿着行的方向,对列进行拼接
    array([[ 1, 2, 3, 7, 8, 9],
      [ 4, 5, 6, 11, 12, 13]])
    
    >>> np.row_stack((ar1,ar2)) # 垂直拼接,沿着列的方向,对行进行拼接
    array([[ 1, 2, 3],
      [ 4, 5, 6],
      [ 7, 8, 9],
      [11, 12, 13]])
    

    np.r_ 和np.c_

    常用于快速生成ndarray数据

    >>> np.r_[ar1,ar2]  # 垂直拼接,沿着列的方向,对行进行拼接
    array([[ 1, 2, 3],
      [ 4, 5, 6],
      [ 7, 8, 9],
      [11, 12, 13]])
     
    >>> np.c_[ar1,ar2] # 水平拼接,沿着行的方向,对列进行拼接
    array([[ 1, 2, 3, 7, 8, 9],
      [ 4, 5, 6, 11, 12, 13]])

    到此这篇关于numpy数组合并和矩阵拼接的实现的文章就介绍到这了,更多相关numpy数组合并和矩阵拼接内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    您可能感兴趣的文章:
    • Python numpy实现数组合并实例(vstack,hstack)
    • numpy系列之数组合并(横向和纵向)
    上一篇:numpy和tensorflow中的各种乘法(点乘和矩阵乘)
    下一篇:Numpy实现矩阵运算及线性代数应用
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    numpy数组合并和矩阵拼接的实现 numpy,数组,合并,和,矩阵,