使用for循环在python中创建多维矩阵

使用for循环在python中创建多维矩阵,python,matlab,for-loop,matrix,multidimensional-array,Python,Matlab,For Loop,Matrix,Multidimensional Array,我正在慢慢地学习MATLAB和Python之间的区别,并想知道如何用Python实现以下在MATLAB中实现的功能: Ak = zeros(3,3,N); for t = 1:N Ak(:,:,t) = [ a(t) 0 0; 0 a(t) 0; 0 0 a(t); ]; end 其中a(t)只是一个包含N元素的向量。任何帮助都会很好。谢谢 您可以使用NumPy进行矩阵计算。这里有一个例子 import numpy as np N = 256 a = n

我正在慢慢地学习MATLAB和Python之间的区别,并想知道如何用Python实现以下在MATLAB中实现的功能:

Ak = zeros(3,3,N);
for t = 1:N
    Ak(:,:,t) = [
    a(t) 0 0;
    0 a(t) 0;
    0 0 a(t);
    ];
end

其中
a(t)
只是一个包含
N
元素的向量。任何帮助都会很好。谢谢

您可以使用NumPy进行矩阵计算。这里有一个例子

import numpy as np
N = 256
a = np.arange(N)
Ak = np.zeros((3,3,N))
for t in range(N):
    Ak[:,:,t] = np.array([[a[t], 0, 0],
                          [0, a[t], 0],
                          [0, 0, a[t]]])
如果将Ak与不同的维度顺序一起使用,如[N,3,3],则可以稍微简化代码

import numpy as np
N = 256
a = np.arange(N)
Ak = np.zeros((N,3,3))
for ak, _a in zip(Ak, a):
    ak[:, :] = np.array([[_a, 0, 0],
                         [0, _a, 0],
                         [0, 0, _a]])

这不是你问题的答案,但MATLAB代码很难看!请参阅
diag
函数。感谢dkato,作为旁白,您为什么使用
np.array()
来定义矩阵?如果我没有将该术语附加到矩阵中,if会在输出和/或运行时产生不同的结果吗?我认为没有
np.array
的代码会产生相同的结果。但是,在Python中,嵌套的括号,如“
[[1,2,3],[4,5,6]]
”,会生成列表列表,这与2d数组不同。因此,我添加了
np.array
,以便明确表示您正在分配2d数组。