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

use*_*243 9 python arrays numpy

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

a = array([1,2,3,4])
b = array([5,6,7,8])
Run Code Online (Sandbox Code Playgroud)

我想要这样的东西:

c = array([[1,2,3,4],[5,6,7,8]])
Run Code Online (Sandbox Code Playgroud)

我们如何使用该concatenate功能?我检查了这两个函数但结果是一样的:

c = concatenate((a,b),axis=0)
# or
c = concatenate((a,b),axis=1)
Run Code Online (Sandbox Code Playgroud)

我们在以下两个功能中都有这个:

c = array([1,2,3,4,5,6,7,8])
Run Code Online (Sandbox Code Playgroud)

Ale*_*ley 10

问题是,无论是ab是一维数组,因此只有一个轴加入他们的.

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

>>> np.vstack((a,b))
array([[1, 2, 3, 4],
       [5, 6, 7, 8]])
Run Code Online (Sandbox Code Playgroud)

另外,row_stackvstack函数的别名:

>>> np.row_stack((a,b))
array([[1, 2, 3, 4],
       [5, 6, 7, 8]])
Run Code Online (Sandbox Code Playgroud)

值得注意的是,可以同时堆叠多个相同长度的阵列.例如,np.vstack((a,b,x,y))将有四行.

在引擎盖下,vstack确保每个数组至少具有两个维度(使用atleast_2D),然后调用concatenate以在第一个轴(axis=0)上连接这些数组.


EdC*_*ica 6

使用np.vstack

\n\n
In [4]:\n\nimport numpy as np\na = np.array([1,2,3,4])\nb = np.array([5,6,7,8])\nc = np.vstack((a,b))\nc\nOut[4]:\narray([[1, 2, 3, 4],\n       [5, 6, 7, 8]])\n\nIn [5]:\n\nd = np.array ([[1,2,3,4],[5,6,7,8]])\nd\n\xe2\x80\x8b\nOut[5]:\narray([[1, 2, 3, 4],\n       [5, 6, 7, 8]])\nIn [6]:\n\nnp.equal(c,d)\nOut[6]:\narray([[ True,  True,  True,  True],\n       [ True,  True,  True,  True]], dtype=bool)\n
Run Code Online (Sandbox Code Playgroud)\n


小智 5

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

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

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

print c
Run Code Online (Sandbox Code Playgroud)

出去:

[[1 2 3 4]
 [5 6 7 8]]
Run Code Online (Sandbox Code Playgroud)

通常,如果您有 2 个以上相同长度的数组:

reshape((number_of_arrays, length_of_array))
Run Code Online (Sandbox Code Playgroud)