从2D矩阵到具有numpy的3D矩阵重复元素

时间:2017-06-07 10:06:21

标签: numpy matrix multidimensional-array

我有一个2-D 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个维度。我该怎么办?

3 个答案:

答案 0 :(得分:2)

NumPy矩阵类无法保存3D数据。因此,假设您可以将NumPy数组作为输出,我们可以使用3D将其数组版本扩展到None/np.newaxis,然后使用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])

答案 1 :(得分:1)

这应该适合你:

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

答案 2 :(得分:0)

另一位回答者已经说过,矩阵不能是三维的。 而不是它,你可以像下面那样制作三维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