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