• numpy的concatenate实现矩阵拼接


    concatenate()

    我们先来介绍最全能的concatenate()函数,后面的几个函数其实都可以用concatenate()函数来进行等价操作。

    concatenate()函数根据指定的维度,对一个元组、列表中的list或者ndarray进行连接,函数原型:

    numpy.concatenate((a1, a2, ...), axis=0)
    

    先来看几个例子,一个2*2的数组和一个1*2的数组,在第0维进行拼接,得到一个3*2的数组:

    a = np.array([[1, 2], [3, 4]])
    b = np.array([[5, 6]])
    np.concatenate((a, b), axis=0)
    

    输出为:

    array([[1, 2],
           [3, 4],
           [5, 6]])
    

    进一步,一个2*2的数组和一个2*1的数组,在第01维进行拼接,得到一个2*3的数组:

    np.concatenate((a, b.T), axis=1)
    

    输出为:

    array([[1, 2, 5],
           [3, 4, 6]])
    

    上面两个简单的例子中,拼接的维度的长度是不同的,但是其他维度的长度必须是相同的,这也是使用concatenate()函数的一个基本原则,违背此规则就会报错,例如一个2*2的数组和一个1*2的数组,在第1维进行拼接:

    np.concatenate((a, b), axis=1)
    

    上面的代码会报错:

    ValueError: all the input array dimensions except for the concatenation axis must match exactly
    
     
    如果拼接的数组是一维数组,则axis只能为0,因为若两个一维数组的shape为(n1,),(n2,), 拼接之后为(n1+n2,)。由于第二维没有长度,所以也就不存在axis=1了

    作者:文哥的学习日记
    链接:https://www.jianshu.com/p/cfe655cb5dd6
    来源:简书
    简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
  • 相关阅读:
    关于用户、用户组及文件权限的试题
    lvm-简介
    项目中用到的jar包简介(1)
    Centos7开启SSH服务
    2.docker架构,原理,安装及简单应用
    如何平滑将注册中心从Eureka迁移到Nacos?
    8.k8s连载--重新生成k8s token(kubeadm join报错及解决)
    7. 复制k8s Node节点 并重新初始化k8s-nodes2节点 (k8s连载)
    6. k8s + jenkins 实现持续集成(完)
    5.k8s基本命令汇总
  • 原文地址:https://www.cnblogs.com/loubin/p/11358823.html
Copyright © 2020-2023  润新知