如何在Python中垂直连接两个数组?

如何在Python中垂直连接两个数组?,python,arrays,numpy,Python,Arrays,Numpy,我想使用NumPy包在Python中垂直连接两个数组: a = array([1,2,3,4]) b = array([5,6,7,8]) 我想要这样的东西: c = array([[1,2,3,4],[5,6,7,8]]) 我们如何使用串联函数来实现这一点?我检查了这两个函数,但结果相同: c = concatenate((a,b),axis=0) # or c = concatenate((a,b),axis=1) 我们在这两个功能中都有这一点: c = array([1,2,3,4,

我想使用NumPy包在Python中垂直连接两个数组:

a = array([1,2,3,4])
b = array([5,6,7,8])
我想要这样的东西:

c = array([[1,2,3,4],[5,6,7,8]])
我们如何使用
串联
函数来实现这一点?我检查了这两个函数,但结果相同:

c = concatenate((a,b),axis=0)
# or
c = concatenate((a,b),axis=1)
我们在这两个功能中都有这一点:

c = array([1,2,3,4,5,6,7,8])

要使用
concatenate
,您需要制作
a
b
二维数组,而不是1D数组,如中所示

c = concatenate((atleast_2d(a), atleast_2d(b)))
或者,您可以简单地执行以下操作

c = array((a,b))

问题是
a
b
都是一维数组,因此只有一个轴可以连接它们

相反,您可以使用(v表示垂直):

另外,
row\u stack
vstack
函数的别名:

>>> np.row_stack((a,b))
array([[1, 2, 3, 4],
       [5, 6, 7, 8]])
还值得注意的是,可以同时堆叠相同长度的多个阵列。例如,
np.vstack((a,b,x,y))
将有四行

在引擎盖下,
vstack
通过确保每个阵列至少有两个维度(使用
至少\u 2D
)工作,然后调用
连接
,在第一个轴(
轴=0
)上连接这些阵列。

使用:


也许这不是一个好的解决方案,但它是使代码正常工作的简单方法,只需添加重塑:

a = array([1,2,3,4])
b = array([5,6,7,8])

c = concatenate((a,b),axis=0).reshape((2,4))

print c
输出:

通常,如果有两个以上长度相同的阵列:

reshape((number_of_arrays, length_of_array))

谢谢你的回答。如何使用
数组
水平连接?是否仅用于垂直连接?@user2991243您可以使用
参数来控制要连接的轴,默认值为
0
a = array([1,2,3,4])
b = array([5,6,7,8])

c = concatenate((a,b),axis=0).reshape((2,4))

print c
[[1 2 3 4]
 [5 6 7 8]]
reshape((number_of_arrays, length_of_array))