numpy.concatenate((a1, a2, …), axis=0)
把数组a1
,a2
…沿着axis
维度进行切片然后拼接到一起
参数含义:
a1,a2,…: 是待拼接的数组,二者的shape
除了axis
维度外,在其他维度应该相等
axis: 指定在哪个axis
上进行切片并拼接
示例: 把一个 1 × 3 1\times3 1×3的ndarray拼接在 3 × 3 3\times3 3×3的array下方
随机生成两个矩阵
>>>import numpy as np
>>>a=np.random.randint(1,9,size=9).reshape((3,3))
>>>print(a)
[[5 8 5]
[4 8 6]
[8 6 4]]
>>>b=np.random.randint(1,9,size=3)
>>>print(b)
[5 3 7]
concatenate
函数要求两个数组要有同样数量的维度(all the input arrays must have same number of dimensions),而此时a.shape
为(3,3),所以a
是2维的,b.shape
为(3,),b
是1维的
用expand_dims
来把b.shape
变成(1,3)
,添加一个维度,使b
变成2
维
>>>b=np.expand_dims(b,axis=0)
>>>b
array([[5, 3, 7]])
>>>b.shape
(1, 3)
b
作为新的一行拼接在a
的下方,此时是行数增加,是把每一行看成一个单元,沿着 axis
0 进行切片并拼接,所以:
>>>np.concatenate((a,b),axis=0)
array([[5, 8, 5],
[4, 8, 6],
[8, 6, 4],
[5, 3, 7]])
如要把b
拼接在a
的右侧,此时是列数增加,把每一列看成一个单元,沿着 axis
1 进行切片并拼接,所以:
>>>np.concatenate((a,b.T),axis=1)
array([[5, 8, 5, 5],
[4, 8, 6, 3],
[8, 6, 4, 7]])
用append函数也可以实现类似功能,请参见下期博客