Python numpy函数hstack() vstack() stack() dstack() vsplit() concatenate()

本文详细介绍了NumPy中数组的合并与分割操作,包括hstack(), vstack(), dstack(), concatenate(), stack()及vsplit()等函数的使用方法与区别,并通过实例展示了如何运用这些函数进行高效的数据处理。
摘要由CSDN通过智能技术生成

原文地址 http://blog.csdn.net/garfielder007/article/details/51378296


切分数据

train[:,0:2]


hstack() vstack() stack() dstack() vsplit()

hstack合并水平方向矩阵

vstack合并垂直方向矩阵

hsplit拆分水平方向矩阵呢
vsplit拆分垂直方向矩阵

感觉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)

程序实例:

[python]  view plain  copy
  1. >>> arrays = [np.random.randn(34for _ in range(10)]  
  2. >>> np.stack(arrays, axis=0).shape  
  3. (1034)  
  4.   
  5. >>>  
  6.   
  7. >>> np.stack(arrays, axis=1).shape  
  8. (3104)  
  9.   
  10. >>>  
  11.   
  12. >>> np.stack(arrays, axis=2).shape  
  13. (3410)  
  14.   
  15. >>>  
  16.   
  17. >>> a = np.array([123])  
  18. >>> b = np.array([234])  
  19. >>> np.stack((a, b))  
  20. array([[123],  
  21.        [234]])  
  22.   
  23. >>>  
  24.   
  25. >>> np.stack((a, b), axis=-1)  
  26. array([[12],  
  27.        [23],  
  28.        [34]])  


二、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)

程序实例:

[python]  view plain  copy
  1. >>> a = np.array((1,2,3))  
  2. >>> b = np.array((2,3,4))  
  3. >>> np.hstack((a,b))  
  4. array([123234])  
  5. >>> a = np.array([[1],[2],[3]])  
  6. >>> b = np.array([[2],[3],[4]])  
  7. >>> np.hstack((a,b))  
  8. array([[12],  
  9.        [23],  
  10.        [34]])  


三、numpy.vstack()函数

函数原型:numpy.vstack(tup)

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

程序实例:

[python]  view plain  copy
  1. >>> a = np.array([123])  
  2. >>> b = np.array([234])  
  3. >>> np.vstack((a,b))  
  4. array([[123],  
  5.        [234]])  
  6.   
  7. >>>  
  8.   
  9. >>> a = np.array([[1], [2], [3]])  
  10. >>> b = np.array([[2], [3], [4]])  
  11. >>> np.vstack((a,b))  
  12. array([[1],  
  13.        [2],  
  14.        [3],  
  15.        [2],  
  16.        [3],  
  17.        [4]])  



四、numpy.dstack()函数

函数原型:numpy.dstack(tup)

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

程序实例:

[python]  view plain  copy
  1. >>> a = np.array((1,2,3))  
  2. >>> b = np.array((2,3,4))  
  3. >>> np.dstack((a,b))  
  4. array([[[12],  
  5.         [23],  
  6.         [34]]])  
  7.   
  8. >>>  
  9.   
  10. >>> a = np.array([[1],[2],[3]])  
  11. >>> b = np.array([[2],[3],[4]])  
  12. >>> np.dstack((a,b))  
  13. array([[[12]],  
  14.        [[23]],  
  15.        [[34]]])  


五、numpy.concatenate()函数

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

程序实例:

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


六、numpy.vsplit()函数

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

程序实例:

[python]  view plain  copy
  1. >>> x = np.arange(16.0).reshape(44)  
  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([36]))  
  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.   
  19. With a higher dimensional array the split is still along the first axis.  
  20. >>>  
  21.   
  22. >>> x = np.arange(8.0).reshape(222)  
  23. >>> x  
  24. array([[[ 0.,  1.],  
  25.         [ 2.,  3.]],  
  26.        [[ 4.,  5.],  
  27.         [ 6.,  7.]]])  
  28. >>> np.vsplit(x, 2)  
  29. [array([[[ 0.,  1.],  
  30.         [ 2.,  3.]]]),  
  31.  array([[[ 4.,  5.],  
  32.         [ 6.,  7.]]])]  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值