前言

numpy库,测试代码记得调用“import numpy as np
题外话:按行拼接意思行数增加,按列拼接意思列数增加。


一、numpy.tile();

numpy.tile(A,rep):数组扩展,这里扩展还是原来的数组
A:数组
rep:(行,列)

第一种


import numpy as np
b=np.array([[2,4],[4,6]])
np.tile(b,(1,3))  #行扩展1倍,列扩展3倍;
<<<array([[2, 4, 2, 4, 2, 4],
       [4, 6, 4, 6, 4, 6]])

第二种

b=np.array([[2,4],[4,6]])
np.tile(b,(3,1))#行扩展3倍,列扩展1倍(本身)
<<<array([[2, 4],
       [4, 6],
       [2, 4],
       [4, 6],
       [2, 4],
       [4, 6]])

第三种

b=np.array([[2,4],[4,6]])
np.tile(b,(3,3))   #行列都扩展3倍
<<<array([[2, 4, 2, 4, 2, 4],
       [4, 6, 4, 6, 4, 6],
       [2, 4, 2, 4, 2, 4],
       [4, 6, 4, 6, 4, 6],
       [2, 4, 2, 4, 2, 4],
       [4, 6, 4, 6, 4, 6]])

二、numpy.concatenate()

numpy.concatenate((a1,a2,…), axis=0) 函数,能够一次完成多个数组的拼接。其中a1,a2,…是数组类型,相同的维数。axis代表维度,几维数据几个维度。

第一种

b=np.array([2,3])
a=np.array([4,6])
np.concatenate((a,b),axis=0)#谁在前以谁开头,一维数组axis=0可省
<<<array([4, 6, 2, 3])

第二种

b=np.array([[1,2],[3,4]])
a=np.array([[5,6],[7,8]])
np.concatenate((a,b),axis=0)  #(a,b)谁在前谁开头。这里可以将axis=0表示行拼接
<<<array([[5, 6],
       [7, 8],
       [1, 2],
       [3, 4]])
np.concatenate((a,b),axis=1)  #(a,b)谁在前谁开头。这里可以将axis=1表示列拼接
<<<array([[5, 6, 1, 2],
       [7, 8, 3, 4]])

第三种

b=np.array([[1,2],[3,4]])
a=np.array([[5,6],[7,8]])
#np.concatenate((a,b),axis=0)
np.concatenate((a,b))    #axis默认按行拼接
<<<array([[5, 6],
       [7, 8],
       [1, 2],
       [3, 4]])

第四种

维数是3维,则axis=-1时,按列拼接

三、numpy.stack()

np.stack([arrays1,array2,array3],axis=0),arrays1,array2,array3数组,axis表示维度

x1 = np.arange(9).reshape((3,3))
<<<array([[0, 1, 2],
       [3, 4, 5],
       [6, 7, 8]])
x2 = np.arange(10,19,1).reshape((3,3))
<<<array([[10, 11, 12],
       [13, 14, 15],
       [16, 17, 18]])
y2 = np.stack((x1,x2),axis=0)#整个数组拼接,按行扩展
<<<array([[[ 0,  1,  2],
        [ 3,  4,  5],
        [ 6,  7,  8]],

       [[10, 11, 12],
        [13, 14, 15],
        [16, 17, 18]]])
y2.shape
<<<(2, 3, 3)
y2 = np.stack((x1,x2),axis=1)  axis=1,则是数组内部列扩展,相应位置列扩展
<<<array([[[ 0,  1,  2],
        [10, 11, 12]],

       [[ 3,  4,  5],
        [13, 14, 15]],

       [[ 6,  7,  8],
        [16, 17, 18]]])
y2.shape
<<<  (3, 2, 3)
b=np.array([[1,2],[3,4]])
a=np.array([[5,6],[7,8]])
d=np.stack((a,b),axis=1)
d
<<<array([[[5, 6],
        [1, 2]],

       [[7, 8],
        [3, 4]]])

第二种

x1 = np.arange(9).reshape((3,3))
x2 = np.arange(10,19,1).reshape((3,3))
y2 = np.stack((x1,x2),axis=-1)
y2
<<<<array([[[ 0, 10],
        [ 1, 11],
        [ 2, 12]],

       [[ 3, 13],
        [ 4, 14],
        [ 5, 15]],

       [[ 6, 16],
        [ 7, 17],
        [ 8, 18]]])
y2.shape
<<<(3,3,2)

总结

用代码操作一下,应该会更明白,更了解。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐