【问题标题】:unable to combine 2d arrays into another 2d array (python)无法将二维数组组合成另一个二维数组(python)
【发布时间】:2017-12-13 14:48:30
【问题描述】:

我有两个列表,

    list_a
    list_b

其形状为 [10,50] 和 [40,50] 我正在尝试将它们组合成一个 [50,50] 数组,从以下代码开始(为便于阅读而编辑)

    array_a=np.array(list_a)
    array_b=np.array(list_b)
    array_c=np.concatenate(array_a,array_b)

但它一直给我一个错误,上面写着

"TypeError: 只有长度为 1 的数组可以转换为 Python 标量"

这里有什么问题,我该如何解决?这个错误不是很有帮助...

【问题讨论】:

    标签: python arrays python-2.7 numpy multidimensional-array


    【解决方案1】:

    np.concatenate 需要一个元组作为参数,即它应该是

    array_c=np.concatenate((array_a,array_b))
    

    第一个参数是任意数量的数组的元组,第二个参数(在您的情况下为 array_b)告诉 concatenate 它应该沿着哪个轴运行。

    【讨论】:

      【解决方案2】:

      这里的问题是np.concatenate 期望第一个参数有一个可迭代的类似数组的对象序列。这里它只是将array_a 作为第一个参数。它将array_b 作为第二个参数,它指定要连接的数组轴。由于此参数需要类似于整数,因此它试图将 array_b 转换为整数,但由于它包含多个项目而失败。因此出现此错误消息。

      要解决这个问题,您需要将两个数组包装在一个可迭代对象中,例如元组,如下所示:

      cc=np.concatenate((array_a,array_b))
      

      这导致两个数组都作为第一个参数传递给函数。 (编辑:包装在列表中也可以,即concatenate([array_a,array_b])。没有尝试过其他形式)。

      在您的示例中,这将起作用,因为第二个参数默认为0,这意味着数组只能在第一个维度(第零索引维度)中具有不同的长度。对你来说,这些长度是1040,另一个维度是50。如果您的数组维度被颠倒,所以它们现在是 [50,10][50,40],您需要将轴设置为第二维度(索引 1),如下所示:

      cc=np.concatenate((array_a,array_b),1)
      

      【讨论】:

        猜你喜欢
        • 2017-10-12
        • 1970-01-01
        • 2021-12-31
        • 1970-01-01
        • 2021-06-04
        • 2021-10-29
        • 2012-04-10
        • 2012-11-13
        • 2022-12-07
        相关资源
        最近更新 更多