组合(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])
>>>