【问题标题】:How to add a 2D matrix to another 3D matrix in python?如何在 python 中将 2D 矩阵添加到另一个 3D 矩阵?
【发布时间】:2017-06-28 16:40:24
【问题描述】:

我有一个 3D 矩阵 a,像这样:

a=np.array([[[1,2],[2,3]],[[3,4],[4,5]]])
[
 [[1 2],[2 3]]
 [[3 4],[4 5]]
]
a.shape
(2, 2, 2)

现在,我想在这个数组中添加另一个元素,例如 [[5,6],[6,7]]。 因此,新数组将是:

[
 [[1, 2],[2, 3]]
 [[3, 4],[4, 5]]
 [[5, 6],[6, 7]]
]
a.shape
(3, 2, 2)

最好的方法是什么? (我正在处理大型数据集,所以我需要最好的方法)

【问题讨论】:

  • 你想怎么添加?预期 o/p?
  • @Divakar :向第一个维度添加一个元素。我在问题正文中解释了更多。

标签: python arrays numpy multidimensional-array add


【解决方案1】:

在将第二个数组扩展到3D 之后,使用np.vstack 垂直堆叠,方法是使用None/np.newaxis 添加一个新轴作为其第一个轴,就像这样 -

np.vstack((a,b[None]))

示例运行 -

In [403]: a
Out[403]: 
array([[[1, 2],
        [2, 3]],

       [[3, 4],
        [4, 5]]])

In [404]: b
Out[404]: 
array([[5, 6],
       [6, 7]])

In [405]: np.vstack((a,b[None]))
Out[405]: 
array([[[1, 2],
        [2, 3]],

       [[3, 4],
        [4, 5]],

       [[5, 6],
        [6, 7]]])

【讨论】:

    【解决方案2】:

    您可以使用np.append 附加到矩阵:

    a = np.array([[[1,2],[2,3]],[[3,4],[4,5]]])
    a = np.append(a, [[[5,6],[6,7]]], axis=0)
    

    请注意,为了使尺寸正确,我必须在第二部分周围添加一组额外的括号。此外,您必须使用axis,否则它将全部展平为线性数组。

    【讨论】:

      【解决方案3】:

      试试 numpy.append

      import numpy as np
      a=np.array([[[1,2],[2,3]],[[3,4],[4,5]]])
      b=np.array([[3,4],[4,5]])
      np.append(a,[b[:,:]],axis=0)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-02-04
        • 2016-06-12
        • 2020-01-06
        • 2021-07-31
        • 2016-12-11
        • 2011-01-16
        相关资源
        最近更新 更多