参考的博客原文为 numpy.stack最通俗的理解,本人对其做了些整理。

功能:

根据axis的不同,对多个矩阵进行堆叠。

  • axis参数的含义:
    axis指明了要增加哪一个维度。
    axis=0,增加第一维度。实际是不切开,两个堆一起。
    axis=1,增加第二维度。实际是横着切开,对应行横着堆。
    axis=2,增加第三维度。实际是竖着切开,对应行竖着堆。

  • 着重介绍堆叠的意思。

示例和说明:

首先我们给出a, b两个矩阵

a            a的元素对应的坐标
[1 2 3]     (0,0) (0,1) (0,2)
[1 2 3]     (1,0) (1,1) (1,2)
[1 2 3]     (2,0) (2,1) (2,2)b          b的元素对应的坐标
[4 5 6]     (0,0) (0,1) (0,2)
[4 5 6]     (1,0) (1,1) (1,2)
[4 5 6]     (2,0) (2,1) (2,2)

接着以np.stack((a, b), axis=1)为例
原来我们a[0][0]=1,现在中间加上一个维度(这里axis=1),就变成了a[0][0][0]=1。(因为np.stack((a, b), axis=1中,a在b的前面,所以中间为0)。

堆叠之后a, b的坐标变为

a            a的元素对应的坐标
[1 2 3]     (0,0,0) (0,0,1) (0,0,2)
[1 2 3]     (1,0,0) (1,0,1) (1,0,2)
[1 2 3]     (2,0,0) (2,0,1) (2,0,2)b            b的元素对应的坐标
[4 5 6]     (0,1,0) (0,1,1) (0,1,2)
[4 5 6]     (1,1,0) (1,1,1) (1,1,2)
[4 5 6]     (2,1,0) (2,1,1) (2,1,2)

接着将对应坐标的数组合,就得到了新的array

                    元素对应的坐标
array([[[1, 2, 3],      (0,0,0) (0,0,1) (0,0,2)[4, 5, 6]],      (0,1,0) (0,1,1) (0,1,2)[[1, 2, 3],      (1,0,0) (1,0,1) (1,0,2)[4, 5, 6]],      (1,1,0) (1,1,1) (1,1,2)[[1, 2, 3],      (2,0,0) (2,0,1) (2,0,2)[4, 5, 6]]]) (2,1,0) (2,1,1) (2,1,2)
  1. 示例1——3个3×1ndarray的堆叠
a = np.array([1, 1, 1])
b = np.array([2, 2, 2])
c = np.array([3, 3, 3])# 以行堆叠
x1 = np.stack((a, b, c), axis=0)
print('x1=\n',x1)
# x1=
# [[1 1 1]
# [2 2 2]
# [3 3 3]]
print('x1.shape=',x1.shape,'\n')
# x1.shape= (3, 3) # 以列堆叠
x2 = np.stack((a, b, c), axis=1)
print('x2=\n',x2)
# x2=
# [[1 2 3]
#  [1 2 3]
#  [1 2 3]]
print('x2.shape=',x2.shape,'\n')
# x2.shape= (3, 3)
  • 示例2——2个3×3ndarray的堆叠
# 定义3个 array 为a, b, c
a = np.array([[1, 1, 1], [2, 2, 2], [3, 3, 3]])b = np.array([[4, 4, 4], [5, 5, 5],[6, 6, 6]])# axis=0
x1 = np.stack((a, b), axis=0)
print('x1=\n',x1)
#  x1=
#  [[[1 1 1]
#   [2 2 2]
#   [3 3 3]]
#  [[4 4 4]
#   [5 5 5]
#   [6 6 6]]]
print('x1.shape=',x1.shape,'\n')
# x1.shape= (2, 3, 3) # axis=1
x2 = np.stack((a, b), axis=1)
print('x2=\n',x2)
# x2=
#  [[[1 1 1]
#   [4 4 4]]
#  [[2 2 2]
#   [5 5 5]]
#  [[3 3 3]
#   [6 6 6]]]
print('x2.shape=',x2.shape,'\n')
# x2.shape= (3, 2, 3) 

[Python] 堆叠函数 stack((a,b), axis=0)相关推荐

  1. Python Numpy多维数组.sum(axis=0/1/2...) 详解

    Python Numpy多维数组.sum(axis=0/1/2-) 详解 numpy中axis取值的说明 首先对numpy中axis取值进行说明:一维数组时axis=0,二维数组时axis=0,1,维 ...

  2. python numpy ufunc.reduce(self, a, axis=0, dtype=None, out=None, keepdims=False)函数.(连续执行原始运算对值聚合)

    def reduce(self, a, axis=0, dtype=None, out=None, keepdims=False): # real signature unknown; restore ...

  3. 如何用Python 求函数 y = sinx 在区间[0, pi/2]上的弧长

    今天在高数课上老师讲到求光滑曲线弧长问题,老师自己想了一个例子: 求函数 y = sinx 在区间[0, pi/2]上的弧长 但是经过微分和积分发现没法求出确定值,百度后发现不可积,是椭圆积分,只能求 ...

  4. python count函数用法 comm_python3:MySQL 8.0学习笔记(第五部分:单表查询操作)

    在讲解单表查询时,首先创建一个emp的员工表,表中字段包括:empno(员工编号).ename(员工姓名).job(员工职位).mgr(员工领导).hiredate(员工入职日期).sal(员工月薪) ...

  5. numpy中sum函数求和时参数axis=0和axis=1的含义

    简单来说,对于一个m*n的矩阵,如果sum()的参数中没有指定axis,就是将所有的数值加到一起,得到1*1的标量.如果是axis=0,就是按照列进行加,得到一个1*n的行向量:如果axis=1,表示 ...

  6. python apply函数_python玄学之 apply函数的axis参数

    不知道小伙伴们学习python的dataframe时,是否遇到一个疑惑,apply参数axis的具体含义是什么? 官方文档解释如下:https://pandas.pydata.org/pandas-d ...

  7. Numpy学习笔记(二):argmax参数中axis=0,axis=1,axis=-1详解附代码

    文章目录 1.argmax和max函数区别 2.axis=0/axis=1/axis=-1的区别 3.具体代码分析 ---3.1一维数组 ---3.2二维数组 ---3.3三维数组 1.argmax和 ...

  8. [转载] python sum()函数和.sum(axis=0)函数的使用

    参考链接: Python sum() 参考: http://www.cnblogs.com/yyxayz/p/4033736.html http://www.pythontab.com/html/20 ...

  9. Python——sum()、.sum(axis=0)和.sum(axis=1)函数的使用

    Python--sum()..sum(axis=0)和.sum(axis=1)函数的使用

最新文章

  1. redis 发布订阅实际案例_Redis源码分析之发布订阅+慢查询+排序以及监视器
  2. javascript Window 对象模型
  3. 可视化分析WEB访问:logstalgia
  4. c++ map用法_Python的 5 种高级用法,效率提升没毛病
  5. JavaSE——MD5、16位流
  6. [Web Chart系列之四] 图形布局-Layout 之js设计实现
  7. [回顾]事件对象——event
  8. 记录蚂蚁笔记服务端的搭建过程
  9. Python+Opencv身份证号码区域提取及识别
  10. java clh_AQS基础——多图详解CLH锁的原理与实现
  11. 写技术博客的一些心得体会
  12. UG NX 12 控制基准平面的显示大小
  13. Linux网络编程-七
  14. 计算机技术教学,小学计算机技术教学计划
  15. 用App Inventor做一个安卓程序
  16. 杜甫的唐诗三百首中的望岳
  17. MySQL中:一条update语句是怎样执行的
  18. 直方图均衡化(Histogram equalization)与直方图规定化
  19. Nexus因异常重启导致OrientDB数据库变为只读的问题修复
  20. 计算机网络专业学校实践经验,学校实习计算机网络心得体会3篇

热门文章

  1. 语音识别的前世今生 | 深度学习彻底改变对话式人工智能
  2. iphone之使用讯飞语音sdk实现语音识别功能
  3. 用java有理数类包含加减乘除_用java具体代码实现分数(即有理数)四则运算
  4. Vue组件化开发 - 非常详细,不要错过哦~
  5. mysql 远程 更改
  6. 【java笔记】of方法 JDK9对集合添加方法的优化
  7. 【数据结构和算法笔记】递归详解(附题)
  8. phpmyadmin/scripts/setup.php,Linux下phpMyAdmin安装过程中的问题解决
  9. RocketMQ怎么保证队列顺序消费
  10. 【PAT乙】1080 MOOC期终成绩 (25分)