如何创建嵌套矩阵?

时间:2020-10-05 09:37:12

标签: python

我对Python还是很陌生,一直试图构造一个嵌套的矩阵,其中它有N个维,每个维都有(m x m)个矩阵。例如,T [0]需要产生一个64x64的矩阵。我使用的值在矩阵Y中,即(N x m)。这是我写的代码块:

for g in range(0,N):
    for k in range(0,m):
        for l in range(0,m):
            T=(1/N)*Y[k,g]*np.conjugate(Y[l,g])

在计算T矩阵时应如何写等式的左侧?我尝试了以下方法,但没有用:

T[g,k,l]
T[g][k,l]

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

首先类似

x = y

不称为方程式,而是“赋值”。这与数学表达式不同。但是不用担心,很多人在刚开始学习编程语言时就会感到困惑。

我不确定您是否要嵌套列表(请参见下面的numpy示例),但是在创建嵌套列表时,可以使用类似这样的列表理解:

N = 10
m = 5
n = 3

T = [[[0 for _ in range(n)] for _ in range(m)] for _ in range(N)]

print(T)

为您提供一个由零组成的10x5x3矩阵。不过,它并不是真正的矩阵。只是嵌套列表,您现在可以按自己的方式访问它。

使用常规的for循环是同样的事情:

N, m, n = 10, 5, 3

T = list()
for _ in range(N):
    t1 = list()
    T.append(t1)
    for _ in range(m):
        t2 = list()
        t1.append(t2)
        for _ in range(n):
            t2.append(0)

print(T)

但是,看到您已经在使用numpy,您可以通过编写以下内容(基本上)来获得相同的东西:

import numpy as np
N = 10; m = 5; n = 3
T = np.zeros((N, m, n))

print(T)

从外观上看,这可能是您想要的,因为从那里开始,您不是在使用Python list-对象,而是使用numpy.ndarray-objects,它使您可以在更多地方执行数值计算。高效,清洁的方式。

您当然也可以这样做:

import numpy as np
N, m, n = , 10, 5, 3

T = [np.zeros((m, n)) for _ in range(N)]

print(T)

这是N个矩阵的列表,每个矩阵具有5x3维。