python numpy中的hstack,vstack,dstack,concatenate函数说明

1)hstack

hstack函数能将两个多维数组在水平方向上堆叠,例如:

>>>R=arange(9).reshape(3,3)

>>>S=arange(12).reshape(3,4)

>>> R

array([[0, 1, 2],

       [3, 4, 5],

       [6, 7, 8]])

>>> S

array([[ 0,  1, 2,  3],

       [ 4, 5,  6,  7],

       [ 8, 9, 10, 11]])

>>>T=hstack((R,S))

>>> T

array([[ 0,  1, 2,  0,  1, 2,  3],

       [ 3, 4,  5,  4, 5,  6,  7],

       [ 6, 7,  8,  8,  9,10, 11]])

注意参与运算的多维数组在水平方向上的个数必须相同。


2)vstack

vstack函数和hstack类似,只不过是在垂直方向上进行堆叠,显然,这个时候要求参与运算的多维数组在垂直方向上的个数要相同。


3)dstack函数


dstack函数是在深度上进行堆叠,请注意下面的示例,在堆叠之后,多维数组的深度(通过shape属性可查看):

>>>m=arange(16).reshape(4,4)

>>> m

array([[ 0,  1, 2,  3],

       [ 4, 5,  6,  7],

       [ 8, 9, 10, 11],

       [12, 13, 14, 15]])

>>>n=m.transpose()

>>> n

array([[ 0,  4,  8,12],

       [ 1, 5,  9, 13],

       [ 2, 6, 10, 14],

       [ 3, 7, 11, 15]])

>>> p=dstack((m,n))

>>> p

array([[[ 0,  0],

        [ 1, 4],

        [ 2, 8],

        [ 3, 12]],

 

       [[ 4, 1],

        [ 5, 5],

        [ 6, 9],

        [ 7, 13]],

 

       [[ 8, 2],

        [ 9, 6],

        [10, 10],

        [11, 14]],

 

       [[12, 3],

        [13, 7],

        [14, 11],

        [15, 15]]])

>>>p.shape

(4, 4, 2),一共四组数据,每组4*2个数据元素


4)Concatenate函数

当axis=1的时候表示水平堆叠,当axis=0的时候表示垂直堆叠

>>>m=arange(16).reshape(4,4)

>>>n=m.transpose()

>>>concatenate((m,n),axis=1)

array([[ 0,  1, 2,  3,  0, 4,  8, 12],

       [ 4, 5,  6,  7, 1,  5,  9, 13],

       [ 8, 9, 10, 11,  2,  6, 10, 14],

       [12, 13, 14, 15,  3,  7,11, 15]])

可见,这个和水平堆叠的效果是一样的。






你可能感兴趣的:(python机器学习)