感觉numpy.hstack()和numpy.column_stack()函数略有相似,numpy.vstack()与numpy.row_stack()函数也是挺像的。

stackoverflow上也有类似的讨论,在这里numpy vstack vs. column_stack。

给一个相关函数的列表:

stack()    Join a sequence of arrays along a new axis.

hstack()    Stack arrays in sequence horizontally (column wise).

dstack()    Stack arrays in sequence depth wise (along third dimension).

concatenate()     Join a sequence of arrays along an existing axis.

vsplit ()   Split array into a list of multiple sub-arrays vertically.

一、numpy.stack()函数

函数原型:numpy.stack(arrays, axis=0)

程序实例:

  1. >>> arrays = [np.random.randn(3, 4) for _ in range(10)]
  2. >>> np.stack(arrays, axis=0).shape
  3. (10, 3, 4)
  4. >>>
  5. >>> np.stack(arrays, axis=1).shape
  6. (3, 10, 4)
  7. >>>
  8. >>> np.stack(arrays, axis=2).shape
  9. (3, 4, 10)
  10. >>>
  11. >>> a = np.array([1, 2, 3])
  12. >>> b = np.array([2, 3, 4])
  13. >>> np.stack((a, b))
  14. array([[1, 2, 3],
  15. [2, 3, 4]])
  16. >>>
  17. >>> np.stack((a, b), axis=-1)
  18. array([[1, 2],
  19. [2, 3],
  20. [3, 4]])

二、numpy.hstack()函数

函数原型:numpy.hstack(tup)

其中tup是arrays序列,The arrays must have the same shape, except in the dimensioncorresponding to
axis (the first, by default).

等价于:np.concatenate(tup, axis=1)

程序实例:

  1. >>> a = np.array((1,2,3))
  2. >>> b = np.array((2,3,4))
  3. >>> np.hstack((a,b))
  4. array([1, 2, 3, 2, 3, 4])
  5. >>> a = np.array([[1],[2],[3]])
  6. >>> b = np.array([[2],[3],[4]])
  7. >>> np.hstack((a,b))
  8. array([[1, 2],
  9. [2, 3],
  10. [3, 4]])

三、numpy.vstack()函数

函数原型:numpy.vstack(tup)

等价于:np.concatenate(tup, axis=0) if tup contains arrays thatare at least 2-dimensional.

程序实例:

  1. >>> a = np.array([1, 2, 3])
  2. >>> b = np.array([2, 3, 4])
  3. >>> np.vstack((a,b))
  4. array([[1, 2, 3],
  5. [2, 3, 4]])
  6. >>>
  7. >>> a = np.array([[1], [2], [3]])
  8. >>> b = np.array([[2], [3], [4]])
  9. >>> np.vstack((a,b))
  10. array([[1],
  11. [2],
  12. [3],
  13. [2],
  14. [3],
  15. [4]])

四、numpy.dstack()函数

函数原型:numpy.dstack(tup)

等价于:np.concatenate(tup, axis=2)

程序实例:

  1. >>> a = np.array((1,2,3))
  2. >>> b = np.array((2,3,4))
  3. >>> np.dstack((a,b))
  4. array([[[1, 2],
  5. [2, 3],
  6. [3, 4]]])
  7. >>>
  8. >>> a = np.array([[1],[2],[3]])
  9. >>> b = np.array([[2],[3],[4]])
  10. >>> np.dstack((a,b))
  11. array([[[1, 2]],
  12. [[2, 3]],
  13. [[3, 4]]])

五、numpy.concatenate()函数

函数原型:numpy.concatenate((a1, a2, ...), axis=0)

程序实例:

  1. >>> a = np.array([[1, 2], [3, 4]])
  2. >>> b = np.array([[5, 6]])
  3. >>> np.concatenate((a, b), axis=0)
  4. array([[1, 2],
  5. [3, 4],
  6. [5, 6]])
  7. >>> np.concatenate((a, b.T), axis=1)
  8. array([[1, 2, 5],
  9. [3, 4, 6]])
  10. This function will not preserve masking of MaskedArray inputs.
  11. >>>
  12. >>> a = np.ma.arange(3)
  13. >>> a[1] = np.ma.masked
  14. >>> b = np.arange(2, 5)
  15. >>> a
  16. masked_array(data = [0 -- 2],
  17. mask = [False  True False],
  18. fill_value = 999999)
  19. >>> b
  20. array([2, 3, 4])
  21. >>> np.concatenate([a, b])
  22. masked_array(data = [0 1 2 2 3 4],
  23. mask = False,
  24. fill_value = 999999)
  25. >>> np.ma.concatenate([a, b])
  26. masked_array(data = [0 -- 2 2 3 4],
  27. mask = [False  True False False False False],
  28. fill_value = 999999)

六、numpy.vsplit()函数

函数原型:numpy.vsplit(ary, indices_or_sections)

程序实例:

  1. >>> x = np.arange(16.0).reshape(4, 4)
  2. >>> x
  3. array([[  0.,   1.,   2.,   3.],
  4. [  4.,   5.,   6.,   7.],
  5. [  8.,   9.,  10.,  11.],
  6. [ 12.,  13.,  14.,  15.]])
  7. >>> np.vsplit(x, 2)
  8. [array([[ 0.,  1.,  2.,  3.],
  9. [ 4.,  5.,  6.,  7.]]),
  10. array([[  8.,   9.,  10.,  11.],
  11. [ 12.,  13.,  14.,  15.]])]
  12. >>> np.vsplit(x, np.array([3, 6]))
  13. [array([[  0.,   1.,   2.,   3.],
  14. [  4.,   5.,   6.,   7.],
  15. [  8.,   9.,  10.,  11.]]),
  16. array([[ 12.,  13.,  14.,  15.]]),
  17. array([], dtype=float64)]
  18. With a higher dimensional array the split is still along the first axis.
  19. >>>
  20. >>> x = np.arange(8.0).reshape(2, 2, 2)
  21. >>> x
  22. array([[[ 0.,  1.],
  23. [ 2.,  3.]],
  24. [[ 4.,  5.],
  25. [ 6.,  7.]]])
  26. >>> np.vsplit(x, 2)
  27. [array([[[ 0.,  1.],
  28. [ 2.,  3.]]]),
  29. array([[[ 4.,  5.],
  30. [ 6.,  7.]]])]

参考:

numpy中的部分源码

Python numpy函数hstack() vstack() stack() dstack() vsplit() concatenate()的更多相关文章

  1. [转]Python numpy函数hstack() vstack() stack() dstack() vsplit() concatenate()

    Python numpy函数hstack() vstack() stack() dstack() vsplit() concatenate() 觉得有用的话,欢迎一起讨论相互学习~Follow Me ...

  2. numpy函数hstack,vstack,dstack简介

    vstack.hstack和dstack都用于把几个小数组合并成一个大数组.它们的差别是小数组的元素在大数组中的排列顺序有所不同.把两部手机摆到一起有几种方式?水平的左右排列,垂直的上下排列,还可以把 ...

  3. Python numpy函数:reshape()

    reshape()函数用于改变数组对象的形状: import numpy as np a = np.array([1,2,3,4,5,6,7,8]) #转换成2D数组 b = a.reshape((2 ...

  4. Python numpy函数:transpose()

    transpose用于对高维数组进行转置,转置时候需要一个由轴编号组成的元组. 比如说三维的数组,那就对维度进行编号,也就是0,1,2:这样说可能比较抽象.这里的0,1,2可以理解为对shape返回元 ...

  5. numpy函数查询手册

    写了个程序,对Numpy的绝大部分函数及其说明进行了中文翻译. 原网址:https://docs.scipy.org/doc/numpy/reference/routines.html#routine ...

  6. Python NumPy学习总结

    一.NumPy简介 其官网是:http://www.numpy.org/ NumPy是Python语言的一个扩充程序库.支持高级大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库.Num ...

  7. Python numpy中矩阵的用法总结

    关于Python Numpy库基础知识请参考博文:https://www.cnblogs.com/wj-1314/p/9722794.html Python矩阵的基本用法 mat()函数将目标数据的类 ...

  8. CS231n课程笔记翻译1:Python Numpy教程

    译者注:本文智能单元首发,翻译自斯坦福CS231n课程笔记Python Numpy Tutorial,由课程教师Andrej Karpathy授权进行翻译.本篇教程由杜客翻译完成,Flood Sung ...

  9. python的函数

    函数一词起源于数学,但是在编程中的函数和数学中的有很大不同.编程中的函数式组织好的,可重复使用的,用于实现单一功能或相关联功能的代码块. 我们在学习过程中已经使用过一些python内建的函数,如pri ...

随机推荐

  1. 输入一个整型数组,数据元素有正数也有负数,求元素组合成连续子数组之和最大的子数组,要求时间复杂度为O(n)。

    如果不考虑时间复杂度,我们可以枚举出所有子数组并求出他们的和.不过非常遗憾的是,由于长度为n的数组有O(n2)个子数组(即:n + n-1 + ... + 1=n(n+1)/2):而且求一个长度为n的 ...

  2. SQL Server 用户名密码查看

    因为SQL Server是默认使用Windows身份验证的,很多时间就会慢慢忘记掉原来设置的密码,那么怎么重新设置用户名密码呢 这里以SQL Server2013为例,先以windows身份验证登陆进 ...

  3. HTML 标题<h1>-<h6>

    定义和用法 <h1> - <h6> 标签可定义标题.<h1> 定义最大的标题.<h6> 定义最小的标题. 由于 h 元素拥有确切的语义,因此请您慎重地选 ...

  4. input框限制只能输入正整数,逻辑与和或运算

    推荐下自己刚写的项目,请大家指正:童话之翼 有时需要限制文本框输入内容的类型,本节分享下正则表达式限制文本框只能输入数字.小数点.英文字母.汉字等代码. 例如,输入大于0的正整数 代码如下: < ...

  5. 解决 LINUX mysql不能通过IP连接 只能localhost 权限没问题情况下

    最近朋友的一个服务器出现了一个奇怪的问题,弄了两个星期没有解决,在哥坚持不懈的努力下,终于解决了问题.发出来给需要的朋友. 问题:php程序连接mysql只能使用localhost,不能使用127.0 ...

  6. windows下安装KeystoneJS

    安装参考: http://keystonejs.com/zh/getting-started/ http://jsnoder.com/kjs/quickstart 安装前提条件: 安装 Node.JS ...

  7. Svn常见问题及相关原因

    1. svn: Server sent unexpected return value (500 Internal Server Error) in response to OPTIONS reque ...

  8. 通过MD5排除重复文件

    今天下载了好多美女图片壁纸,可是看了一下发现好多图片重复了,有强迫症的我必须把重复的都给剔除掉,首先想到的当然是百度了,问问度娘有没有什么图片去重的工具,搜了一下还真有.奈何本人智商捉急用不来这高级的 ...

  9. OC基础--类

    都是注释哈 类的组成: C语言中函数分为声明和实现 OC中定义一个类也分为声明和实现, 也就是说以后我们在OC中定义类, 就是在写类的声明和实现 编写类的声明和实现: 声明 .h: /*  行为方法: ...

  10. candence 知识积累4

    一.PCB布局约束: 1.尺寸规划:PCB大小要合适,PCB太大印制线路长,阻抗增加.太小散热不好,易受干扰. 2.PCB尺寸确定后要确定特殊器件的位置. 3.尽可能缩短高频元器件之间的连线,设法减少 ...