numpy中hstack() vstack() stack() dstack() vsplit() concatenate() 函数用法

来源:互联网 发布:查淘宝买家退货率 编辑:程序博客网 时间:2024/05/16 09:35
感觉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

    >>> arrays = [np.random.randn(3, 4) for _ in range(10)]  
    >>> np.stack(arrays, axis=0).shape  
    (10, 3, 4)  
      
    >>>  
      
    >>> np.stack(arrays, axis=1).shape  
    (3, 10, 4)  
      
    >>>  
      
    >>> np.stack(arrays, axis=2).shape  
    (3, 4, 10)  
      
    >>>  
      
    >>> a = np.array([1, 2, 3])  
    >>> b = np.array([2, 3, 4])  
    >>> np.stack((a, b))  
    array([[1, 2, 3],  
           [2, 3, 4]])  
      
    >>>  
      
    >>> np.stack((a, b), axis=-1)  
    array([[1, 2],  
           [2, 3],  
           [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)

程序实例:

[python] view plain copy

    >>> a = np.array((1,2,3))  
    >>> b = np.array((2,3,4))  
    >>> np.hstack((a,b))  
    array([1, 2, 3, 2, 3, 4])  
    >>> a = np.array([[1],[2],[3]])  
    >>> b = np.array([[2],[3],[4]])  
    >>> np.hstack((a,b))  
    array([[1, 2],  
           [2, 3],  
           [3, 4]])  



三、numpy.vstack()函数

函数原型:numpy.vstack(tup)

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

程序实例:

[python] view plain copy

    >>> a = np.array([1, 2, 3])  
    >>> b = np.array([2, 3, 4])  
    >>> np.vstack((a,b))  
    array([[1, 2, 3],  
           [2, 3, 4]])  
      
    >>>  
      
    >>> a = np.array([[1], [2], [3]])  
    >>> b = np.array([[2], [3], [4]])  
    >>> np.vstack((a,b))  
    array([[1],  
           [2],  
           [3],  
           [2],  
           [3],  
           [4]])  




四、numpy.dstack()函数

函数原型:numpy.dstack(tup)

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

程序实例:

[python] view plain copy

    >>> a = np.array((1,2,3))  
    >>> b = np.array((2,3,4))  
    >>> np.dstack((a,b))  
    array([[[1, 2],  
            [2, 3],  
            [3, 4]]])  
      
    >>>  
      
    >>> a = np.array([[1],[2],[3]])  
    >>> b = np.array([[2],[3],[4]])  
    >>> np.dstack((a,b))  
    array([[[1, 2]],  
           [[2, 3]],  
           [[3, 4]]])  



五、numpy.concatenate()函数

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

程序实例:

[python] view plain copy

    >>> a = np.array([[1, 2], [3, 4]])  
    >>> b = np.array([[5, 6]])  
    >>> np.concatenate((a, b), axis=0)  
    array([[1, 2],  
           [3, 4],  
           [5, 6]])  
    >>> np.concatenate((a, b.T), axis=1)  
    array([[1, 2, 5],  
           [3, 4, 6]])  
      
    This function will not preserve masking of MaskedArray inputs.  
    >>>  
      
    >>> a = np.ma.arange(3)  
    >>> a[1] = np.ma.masked  
    >>> b = np.arange(2, 5)  
    >>> a  
    masked_array(data = [0 -- 2],  
                 mask = [False  True False],  
           fill_value = 999999)  
    >>> b  
    array([2, 3, 4])  
    >>> np.concatenate([a, b])  
    masked_array(data = [0 1 2 2 3 4],  
                 mask = False,  
           fill_value = 999999)  
    >>> np.ma.concatenate([a, b])  
    masked_array(data = [0 -- 2 2 3 4],  
                 mask = [False  True False False False False],  
           fill_value = 999999)  



六、numpy.vsplit()函数

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

程序实例:

[python] view plain copy

    >>> x = np.arange(16.0).reshape(4, 4)  
    >>> x  
    array([[  0.,   1.,   2.,   3.],  
           [  4.,   5.,   6.,   7.],  
           [  8.,   9.,  10.,  11.],  
           [ 12.,  13.,  14.,  15.]])  
    >>> np.vsplit(x, 2)  
    [array([[ 0.,  1.,  2.,  3.],  
           [ 4.,  5.,  6.,  7.]]),  
     array([[  8.,   9.,  10.,  11.],  
           [ 12.,  13.,  14.,  15.]])]  
    >>> np.vsplit(x, np.array([3, 6]))  
    [array([[  0.,   1.,   2.,   3.],  
           [  4.,   5.,   6.,   7.],  
           [  8.,   9.,  10.,  11.]]),  
     array([[ 12.,  13.,  14.,  15.]]),  
     array([], dtype=float64)]  
      
    With a higher dimensional array the split is still along the first axis.  
    >>>  
      
    >>> x = np.arange(8.0).reshape(2, 2, 2)  
    >>> x  
    array([[[ 0.,  1.],  
            [ 2.,  3.]],  
           [[ 4.,  5.],  
            [ 6.,  7.]]])  
    >>> np.vsplit(x, 2)  
    [array([[[ 0.,  1.],  
            [ 2.,  3.]]]),  
     array([[[ 4.,  5.],  
            [ 6.,  7.]]])] 
阅读全文
0 0
原创粉丝点击