首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用vstack在numpy中堆叠数组

使用vstack在numpy中堆叠数组
EN

Stack Overflow用户
提问于 2016-09-13 12:56:22
回答 2查看 6K关注 0票数 3

array1.shape给(180),array2.shape给(180,1)

这两个有什么不同?由于这种差异,我无法使用以下命令堆叠它们

代码语言:javascript
运行
复制
np.vstack((array2, array1))

我应该对array1形状进行哪些更改才能将它们堆叠起来?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-09-13 13:02:08

让我们定义一些数组:

代码语言:javascript
运行
复制
>>> x = np.zeros((4, 1))
>>> y = np.zeros((4))

按原样,这些数组无法堆叠:

代码语言:javascript
运行
复制
>>> np.vstack((x, y))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python3/dist-packages/numpy/core/shape_base.py", line 230, in vstack
    return _nx.concatenate([atleast_2d(_m) for _m in tup], 0)
ValueError: all the input array dimensions except for the concatenation axis must match exactly

但是,通过简单的更改,它们将堆叠在一起:

代码语言:javascript
运行
复制
>>> np.vstack((x, y[:, None]))
array([[ 0.],
       [ 0.],
       [ 0.],
       [ 0.],
       [ 0.],
       [ 0.],
       [ 0.],
       [ 0.]])

或者:

代码语言:javascript
运行
复制
>>> np.vstack((x[:, 0], y))
array([[ 0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.]])
票数 3
EN

Stack Overflow用户

发布于 2016-09-13 13:22:15

代码语言:javascript
运行
复制
In [81]: x1=np.ones((10,)); x2=np.ones((10,1))

一个数组是一维的,另一个是二维的。vertical堆栈需要2个维度,垂直和水平。因此,np.vstack通过np.atleast_2d传递每个输入

代码语言:javascript
运行
复制
In [82]: np.atleast_2d(x1).shape
Out[82]: (1, 10)

但是现在我们有一个(1,10)数组和一个(10,1)数组-它们不能在任一轴上连接。

但如果我们重塑x1,使其成为(10,1),那么我们可以在任何一个方向上与x2结合:

代码语言:javascript
运行
复制
In [83]: np.concatenate((x1[:,None],x2), axis=0).shape
Out[83]: (20, 1)
In [84]: np.concatenate((x1[:,None],x2), axis=1).shape
Out[84]: (10, 2)

打印出两个数组:

代码语言:javascript
运行
复制
In [86]: x1
Out[86]: array([ 1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.])
In [87]: x2
Out[87]: 
array([[ 1.],
       [ 1.],
       [ 1.],
       [ 1.],
       [ 1.],
       [ 1.],
       [ 1.],
       [ 1.],
       [ 1.],
       [ 1.]])

如何在不做任何调整的情况下将这两个形状连接起来?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39462433

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档