首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >vstack数值数组

vstack数值数组
EN

Stack Overflow用户
提问于 2012-10-15 00:48:04
回答 1查看 809关注 0票数 1

如果我有两条ndarray:

代码语言:javascript
复制
a.shape   # returns (200,300, 3)
b.shape   # returns (200, 300)

numpy.vstack((a,b))  # Gives error

将打印出错误: ValueError:数组必须具有相同的维数

我试着做了vstack((a.reshape(-1,300), b),但输出非常奇怪。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-15 00:59:46

您不需要指定您实际想要的最终形状。如果是(200,300,4),你可以改用dstack

代码语言:javascript
复制
>>> import numpy as np
>>> a = np.random.random((200,300,3))
>>> b = np.random.random((200,300))
>>> c = np.dstack((a,b)) 
>>> c.shape
(200, 300, 4)

基本上,当你在堆叠时,长度必须在所有其他轴上一致。

基于评论更新:

如果您想要(800,300),您可以尝试如下所示:

代码语言:javascript
复制
>>> a = np.ones((2, 3, 3)) * np.array([1,2,3])
>>> b = np.ones((2, 3)) * 4
>>> c = np.dstack((a,b))
>>> c
array([[[ 1.,  2.,  3.,  4.],
        [ 1.,  2.,  3.,  4.],
        [ 1.,  2.,  3.,  4.]],

       [[ 1.,  2.,  3.,  4.],
        [ 1.,  2.,  3.,  4.],
        [ 1.,  2.,  3.,  4.]]])
>>> c.T.reshape(c.shape[0]*c.shape[-1], -1)
array([[ 1.,  1.,  1.],
       [ 1.,  1.,  1.],
       [ 2.,  2.,  2.],
       [ 2.,  2.,  2.],
       [ 3.,  3.,  3.],
       [ 3.,  3.,  3.],
       [ 4.,  4.,  4.],
       [ 4.,  4.,  4.]])
>>> c.T.reshape(c.shape[0]*c.shape[-1], -1).shape
(8, 3)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12884362

复制
相关文章

相似问题

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