【问题标题】:Append matrices to a numpy array将矩阵附加到 numpy 数组
【发布时间】:2021-10-25 03:39:48
【问题描述】:
testMat1 = np.array([[1,2,3,4],[4,5,6,7]])
testMat2 = np.array([[7,8,9,10],[10,11,12,13]])
testMat3 = np.array([[2,4,6,8],[3,5,7,9]])

这里是三个形状矩阵(2, 4)

如何将它们组合成一个形状为(3, 2, 4) 的多维数组?

np.array([testMat1, testMat2, testMat3]) 工作正常,但这不是 我正在寻找什么,因为我将不断添加更多矩阵 数组。我需要一种附加新矩阵的方法 到数组。我尝试使用np.append,但它似乎不是为此目的。

【问题讨论】:

  • 通常我们建议附加到列表中。任何类型的附加到数组都需要创建一个包含完整副本的新数组。可以在适当注意尺寸的情况下完成,但效率较低。
  • @hpaulj 我明白了。但是我需要使用 numpy ndarray,所以我会附加到列表中并反复将其转换为 ndarray,这在时间和内存上都非常昂贵。有没有更好的方法?
  • 我不知道随着列表的增长重复执行np.array(alist) 和重复连接之间的权衡是什么。另一种方法是将数组初始化为完整大小,并在新数组可用时“插入”它们,在适当的切片上进行计算。
  • 根本问题是列表包含对可以分散在内存中的数组的引用,而多维数组的数据位于一个连续的块中。如果你想要一个更大的块,你必须做一个新的。

标签: python arrays numpy multidimensional-array append


【解决方案1】:

您可以使用np.vstack() 垂直堆叠数组。

在您的情况下,命令如下所示: combined = np.vstack(([testMat1], [testMat2], [testMat3])) 这会给你形状(3, 2, 4)

您可以通过以下方式不断添加更多数组并对其进行更新: combined = np.vstack((combined, [testMat4])) 这会给你形状 (4, 2, 4)

【讨论】:

    猜你喜欢
    • 2018-06-13
    • 2016-02-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-06
    • 2017-03-04
    • 2011-03-21
    相关资源
    最近更新 更多