您的位置:首页 > 编程语言 > Python开发

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

2017-01-17 09:53 344 查看

组合(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_
的默认行为和
vstack
hstack
很像,但是允许可选的参数给出组合所沿着的轴的代号。

更多函数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])

>>>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: