MatLab多维矩阵到NumPy矩阵的转换

mdfafbf1  于 2022-11-15  发布在  Matlab
关注(0)|答案(2)|浏览(293)

我想用python语言编写这个matlab矩阵:U = [Q S P;S H G;P G E];
其中P、Q、S、H、G、E的维度为103乘103。
这是用Python编写的,但它的语法错误,U = np.array([[Q ,S, P ],[S, H, G], [P, G, E]]),并且给我提供了错误的维度
正确的输出尺寸为309乘以309

guykilcj

guykilcj1#

正如@MichaelSzczesny在一条评论中指出的那样,np.block最接近于matlab所做的事情。

import numpy as np

rows = 103
cols = 103

Q = np.ones((rows,cols)) * 1
S = np.ones((rows,cols)) * 2
P = np.ones((rows,cols)) * 3
H = np.ones((rows,cols)) * 4
G = np.ones((rows,cols)) * 5
E = np.ones((rows,cols)) * 6

U = np.block([
    [Q, S, P], 
    [S, H, G],
    [P, G, E]
    ])

print('U has dimensions', U.shape)
# U has dimensions (309, 309)
cnwbcb6i

cnwbcb6i2#

我认为您可以使用np.concatenate进行数组的多个串联。
示例:

import numpy as np

rows = 103
cols = 103

Q = np.array([[0]*cols]*rows)
S = np.array([[1]*cols]*rows)
P = np.array([[2]*cols]*rows)
H = np.array([[3]*cols]*rows)
G = np.array([[4]*cols]*rows)
E = np.array([[5]*cols]*rows)

U = np.concatenate((np.concatenate((Q,S,P)),np.concatenate((S,H,G)),np.concatenate((P,G,E))), 1)

print("Output dimensions: ", len(U[0]), " by ", len(U))

相关问题