我对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]
感谢您的帮助。
答案 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
维。