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
问题是,无论是a和b是一维数组,因此只有一个轴加入他们的.
相反,您可以使用vstack(v表示垂直):
>>> np.vstack((a,b))
array([[1, 2, 3, 4],
[5, 6, 7, 8]])
Run Code Online (Sandbox Code Playgroud)
另外,row_stack是vstack函数的别名:
>>> 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)上连接这些数组.
使用np.vstack:
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)\nRun 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)
| 归档时间: |
|
| 查看次数: |
25323 次 |
| 最近记录: |