如果有多个数组想要组合在一起,也可以通过其中的一些函数来实现。
1 vstack:将数组按垂直方向进行叠加。数组的列数必须相同才能叠加。示例代码如下:
a1 = np.random.randint(0,10,size=(3,5))
a2 = np.random.randint(0,10,size=(1,5))
a3 = np.vstack([a1,a2])
2 hstack:将数组按水平方向进行叠加。数组的行必须相同才能叠加。示例代码如下:
a1 = np.random.randint(0,10,size=(3,2))
a2 = np.random.randint(0,10,size=(3,1))
a3 = np.hstack([a1,a2])
3 concatenate([],axis):将两个数组进行叠加,但是具体是按水平方向还是按垂直方向。则要看axis的参数,如果axis=0,那么代表的是往垂直方向(行)叠加,如果axis=1,那么代表的是往水平方向(列)上叠加,如果axis=None,那么会将两个数组组合成一个一维数组。需要注意的是,如果往水平方向上叠加,那么行必须相同,如果是往垂直方向叠加,那么列必须相同。示例代码如下:
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]])
np.concatenate((a, b), axis=None)
# 结果:
array([1, 2, 3, 4, 5, 6])
4 np.append方法使用类似于上述concatenate 方法,如果不指定axis,则默认展开成为一维数组进行拼接,axis=1按照水平方向进行拼接,axis=0按照竖直方向进行拼接
a1 = np.random.randint(0,10,size=(3,5))
a2 = np.random.randint(0,10,size=(3,5))
a4 = np.append(a1, a2, axis=0)
print(a4) # 输出shape为(6,5)的数组
a5 = np.append(a1, a2, axis=1)
print(a5) # 输出shape为(3,10)的数组