【问题标题】:Repeat element from a 2D matrix to a 3D matrix with numpy使用 numpy 将元素从 2D 矩阵重复到 3D 矩阵
【发布时间】:2017-06-07 10:06:20
【问题描述】:

我有一个二维 numpy 矩阵,一个例子

M = np.matrix([[1,2],[3,4],[5,6]])

我想从 M 开始,有一个像这样的矩阵:

M = np.matrix([[[1,2],[1,2],[1,2]],[[3,4],[3,4],[3,4]],[[5,6],[5,6],[5,6]]])

因此,新矩阵有 3 个维度。我该怎么办?

【问题讨论】:

  • 发布的解决方案是否适合您?

标签: numpy matrix multidimensional-array


【解决方案1】:

NumPy 矩阵类不能保存3D 数据。因此,假设您可以使用 NumPy 数组作为输出,我们可以使用 None/np.newaxis 将其数组版本扩展为 3D,然后使用 np.repeat -

np.repeat(np.asarray(M)[:,None],3,axis=1)

示例运行 -

In [233]: M = np.matrix([[1,2],[3,4],[5,6]])

In [234]: np.repeat(np.asarray(M)[:,None],3,axis=1)
Out[234]: 
array([[[1, 2],
        [1, 2],
        [1, 2]],

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

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

或者,np.tile -

np.tile(np.asarray(M),3).reshape(-1,3,M.shape[-1])

【讨论】:

    【解决方案2】:

    这应该适合你:

    np.array([list(np.array(i)) * 3 for i in M])
    

    【讨论】:

      【解决方案3】:

      正如另一个回答者已经说过的,矩阵不能是三维的。 取而代之的是,您可以制作 3 维 np.array,如下所示。

      import numpy as np
      M = np.matrix([[1,2],[3,4],[5,6]])
      M = np.array(M)
      M = np.array([ [x, x, x] for x in M])
      M
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-05-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-16
        • 2021-09-14
        • 2015-02-04
        • 2016-11-08
        相关资源
        最近更新 更多