【问题标题】:How to append a 2d array to 3d array?如何将 2d 数组附加到 3d 数组?
【发布时间】:2021-06-06 11:22:33
【问题描述】:

我有一个像这样构造的 3D 嵌套列表:

[[[1,1],[2,1],[2,2],[1,2]],[[-1,-1],[-2,-1],[-2,-2],[-1,-2]]]

我想连接到 [[0,0]] 以获得这个结果:

[[[1,1],[2,1],[2,2],[1,2]],[[-1,-1],[-2,-1],[-2,-2],[-1,-2]],[[0,0]]]

我尝试使用numpy.appendcolumn_stack 方法,但它抱怨尺寸不匹配。怎么做才对?

【问题讨论】:

  • 这是numpy.array还是内置list
  • 如果它是一个列表,那么 a.append([[0,0]]) 应该可以工作。
  • 您不能在 numpy 中执行此操作,但在 list 中可以使用 append 方法。

标签: python list numpy


【解决方案1】:

问题是,一旦你有一个形状为(2, 4, 2)numpy 数组,你就不能真正附加另一个形状为(1, 1, 2) 的数组,除非你将列表视为对象(即,你将一个元素附加到一个大小为2 这样最后你就有了一个大小为 3 的数组。

如果您有一个 numpy 数组 list 对象,您将无法从 numpy 提供的大部分功能中受益,所以也许更详细地解释一下您究竟想要在这里实现什么.

>>> a = np.array([[[1,1],[2,1],[2,2],[1,2]],[[-1,-1],[-2,-1],[-2,-2],[-1,-2]]])
>>> b = np.array([[[0, 0]]])
>>> a.shape, b.shape
((2, 4, 2), (1, 1, 2))
>>> c = np.array(a.tolist() + b.tolist())
>>> c
array([list([[1, 1], [2, 1], [2, 2], [1, 2]]),
       list([[-1, -1], [-2, -1], [-2, -2], [-1, -2]]), list([[0, 0]])],
      dtype=object)
>>> c.shape
(3,)
>>> c.tolist()
[[[1, 1], [2, 1], [2, 2], [1, 2]],
 [[-1, -1], [-2, -1], [-2, -2], [-1, -2]],
 [[0, 0]]]

最后一个值是您似乎正在寻找的列表。您不必通过numpy 完成此过程来获取它,并且可以像其他人建议的那样简单地append

【讨论】:

  • [[1,1],[2,1],[2,2],[1,2]][[-1,-1],[-2,-1],[-2,-2],[-1,-2]] 是矩形顶点的坐标,[[0,0]] 是一个点的坐标,我想将其添加到具有矩形的数组中(供以后处理)
  • numpy 旨在帮助您处理向量、矩阵、张量等。它允许您执行各种操作,但是,您不能拥有不完整的“行”,因此您可能想要工作使用纯列表,只需将您的点附加到以前的“形状”列表中
【解决方案2】:

猜猜看,我可以使用默认的append 函数;我不知道该函数没有返回新数组

【讨论】:

  • 是的,小心使用numpy函数。如果你从一个列表开始,想要一个列表结果,使用numpy 通常会比较慢,而且可能是错误的。
猜你喜欢
  • 2016-03-25
  • 1970-01-01
  • 2016-01-15
  • 1970-01-01
  • 1970-01-01
  • 2021-10-12
  • 2020-06-13
  • 2020-03-13
  • 1970-01-01
相关资源
最近更新 更多