NumPy 沿不同轴将数组堆叠在一起

组合(stack)不同的数组

几种方法可以沿不同轴将数组堆叠在一起:

>>> a = floor(10*random.random((2,2)))
>>> a
array([[ 1.,  1.],
       [ 5.,  8.]])
>>> b = floor(10*random.random((2,2)))
>>> b
array([[ 3.,  3.],
       [ 6.,  0.]])
>>> vstack((a,b))
array([[ 1.,  1.],
       [ 5.,  8.],
       [ 3.,  3.],
       [ 6.,  0.]])
>>> hstack((a,b))
array([[ 1.,  1.,  3.,  3.],
       [ 5.,  8.,  6.,  0.]])

函数 column_stack 以列将一维数组合成二维数组,它等同与 vstack 对一维数组。

>>> column_stack((a,b))   # With 2D arrays
array([[ 1.,  1.,  3.,  3.],
       [ 5.,  8.,  6.,  0.]])
>>> a=array([4.,2.])
>>> b=array([2.,8.])
>>> a[:,newaxis]  # This allows to have a 2D columns vector
array([[ 4.],
       [ 2.]])
>>> column_stack((a[:,newaxis],b[:,newaxis]))
array([[ 4.,  2.],
       [ 2.,  8.]])
>>> vstack((a[:,newaxis],b[:,newaxis])) # The behavior of vstack is different
array([[ 4.],
       [ 2.],
       [ 2.],
       [ 8.]])

row_stack 函数,另一方面,将一维数组以行组合成二维数组。

对那些维度比二维更高的数组, hstack 沿着第二个轴组合, vstack 沿着第一个轴组合, concatenate 允许可选参数给出组合时沿着的轴。

Note

在复杂情况下, r_[]c_[] 对创建沿着一个方向组合的数很有用,它们允许范围符号(“:”):

>>> r_[1:4,0,4]
array([1, 2, 3, 0, 4])

当使用数组作为参数时, r_c_ 的默认行为和 vstackhstack 很像,但是允许可选的参数给出组合所沿着的轴的代号。

更多函数hstack , vstack, column_stack , row_stack , concatenate , c_ , r_ 参见 NumPy示例 .


0
>>> a = floor(10*random.random((2,2)))
>>> a
array([[ 0.,  5.],
       [ 1.,  2.]])
>>> b = floor(10*random.random((2,2)))
>>> b
array([[ 1.,  6.],
       [ 5.,  5.]])
>>> vstack((a,b))
array([[ 0.,  5.],
       [ 1.,  2.],
       [ 1.,  6.],
       [ 5.,  5.]])
>>> hstack((a,b))
array([[ 0.,  5.,  1.,  6.],
       [ 1.,  2.,  5.,  5.]])
>>> column_stack((a,b))
array([[ 0.,  5.,  1.,  6.],
       [ 1.,  2.,  5.,  5.]])
>>> a=array([4.,2.])
>>> b=array([2.,8.])
>>> a[:,newaxis]
array([[ 4.],
       [ 2.]])
>>> a
array([ 4.,  2.])
>>> b
array([ 2.,  8.])
>>> b[:,newaxis]
array([[ 2.],
       [ 8.]])
>>> column_stack((a[:,newaxis],b[:,newaxis]))
array([[ 4.,  2.],
       [ 2.,  8.]])
>>> a=array([4.,3.])
>>> column_stack((a[:,newaxis],b[:,newaxis]))
array([[ 4.,  2.],
       [ 3.,  8.]])
>>> vstack((a[:,newaxis],b[:,newaxis]))
array([[ 4.],
       [ 3.],
       [ 2.],
       [ 8.]])
>>> row_stack(a,b)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: vstack() takes exactly 1 argument (2 given)
>>> row_stack((a,b))
array([[ 4.,  3.],
       [ 2.,  8.]])
>>> a
array([ 4.,  3.])
>>> b
array([ 2.,  8.])
>>> r_[1:4,0,4]
array([1, 2, 3, 0, 4])
>>>



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值