【问题标题】:Array stacking/ concatenation error in pythonpython中的数组堆叠/连接错误
【发布时间】:2015-06-17 10:35:35
【问题描述】:

我正在尝试连接两个数组:a 和 b,其中

a.shape
(1460,10)
b.shape
(1460,)

我尝试使用 hstack 并连接为:

np.hstack((a,b)) 
c=np.concatenate(a,b,0) 

我被错误困住了

 ValueError: all the input arrays must have same number of dimensions

请指导我连接并生成尺寸为 1460 x 11 的数组 c。

【问题讨论】:

    标签: python arrays numpy concatenation


    【解决方案1】:

    试试

    b = np.expand_dims( b,axis=1 ) 
    

    然后

    np.hstack((a,b))
    

    np.concatenate( (a,b) , axis=1)
    

    将正常工作。

    【讨论】:

      【解决方案2】:

      np.c_[a, b] 沿最后一个轴连接。 每the docs

      ... 数组将在之后沿其最后一个轴堆叠 升级到至少 2-D,并在形状上附加 1

      由于b 的形状为(1460,),其形状在沿最后一个轴连接之前升级为(1460, 1)


      In [26]: c = np.c_[a,b]
      
      In [27]: c.shape
      Out[27]: (1460, 11)
      

      【讨论】:

      • 如何存储这个数组?分配不起作用:它说“TypeError:'CClass'对象不可调用”
      • @optimist:注意np.c_ 后面是括号[...],而不是括号(...)。错误'CClass' object is not callable 是说np.c_ 不能被调用,就是后面跟括号的情况。
      【解决方案3】:

      最基本的操作是:

      np.concatenate((a,b[:,None]),axis=1)
      

      [:,None] 位将b 转换为(1060,1) 数组。现在两个数组的第一个维度匹配,您可以轻松地连接第二个维度。

      将第二维添加到b 有多种方法,例如reshapeexpanddimshstack 使用 atleast_1d 在这种情况下没有帮助。 atleast_2d 在错误的一侧添加了 None。我强烈建议学习[:,None] 语法。

      一旦数组都是二维的并且在正确的维度上匹配,连接就很容易了。

      【讨论】:

        猜你喜欢
        • 2014-06-20
        • 2021-07-07
        • 2018-06-19
        • 2018-09-26
        • 2019-08-05
        • 2017-01-28
        • 2017-07-14
        • 1970-01-01
        • 2019-04-11
        相关资源
        最近更新 更多