【问题标题】:Putting 2 dimensional numpy arrays into a 3 dimensional array将 2 维 numpy 数组放入 3 维数组
【发布时间】:2016-12-30 22:38:25
【问题描述】:

我想继续将 numpy 数组添加到 python 中的另一个数组。 假设我有以下数组:

arraytotal = np.array([])
array1 = np.array([1,1,1,1,1]) 
array2 = np.array([2,2,2,2,2])

我想将array1 和array2 追加到arraytotal 中。但是,当我使用时:

arraytotal.append[array1]

它告诉我:

'numpy.ndarray' 对象没有属性'append'

如何将 array1 和 array2 附加到 arraytotal 中?

【问题讨论】:

  • 将数组添加到其他数组的成本很高(需要替换;就像将元素添加到经典 C 数组而不是更快的列表)。只需收集您的数组(例如在列表中)并使用 np.vstack/np.hstack (取决于您想要的形状)。我也没有得到你描述的多个 2d->3d 的东西。您的示例看起来更像是多个 1d -> 2d。更简单的方法:创建列表列表并将最终数据转换为数组。
  • 这种语法非常错误,不清楚您的意思。此外,您似乎没有正确计算尺寸。
  • 谢谢。你是对的,如果我不愿意包含 2D 文件的制作方式,我就不应该提到它是从 2D 到 3D。基本上,listx 和 listy 中的每个项目都给出了一个像素的坐标,返回的值基于以该值为中心的某个帧内每个像素的 rgb 值。
  • 我不确定您所说的“大错特错”是什么意思,但我知道这令人困惑。让我看看我能做些什么来使它更容易理解
  • 哦,现在我明白你说的错误是什么意思了

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


【解决方案1】:

不幸的是,没有办法像那样操作数组。相反,创建一个具有相同名称的列表,并附加两个数组并将其更改为一个 numpy 数组,如下所示:

arraytotal[]
array1 = np.array([1,1,1,1,1])
arraytotal.append[array1]
np.array(arraytotal)

【讨论】:

    【解决方案2】:

    你可以像这样使用 np.concatenate() :

    arraytotal = np.concatenate(([array1], [array2]))
    

    这会产生以下二维数组。

    array([[1, 1, 1, 1, 1],
       [2, 2, 2, 2, 2]])
    

    希望这就是您想要的。

    【讨论】:

      【解决方案3】:

      您应该将数组附加到常规 python 列表中,然后在最后将列表转换为 numpy 数组:

      import numpy as np
      total = []
      for i in range(5,15):
          thisArray = np.arange(i)
          total.append(thisArray)
      total = np.asarray(total)
      

      那个循环生成一个二维数组;您可以嵌套循环以生成更高维的数组。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-11-02
        • 1970-01-01
        • 2013-08-03
        • 2014-05-23
        • 1970-01-01
        • 1970-01-01
        • 2021-02-06
        相关资源
        最近更新 更多