我目前正在编写一个程序,其中定义了两个数组,然后进行奇异值分解,然后进行一些其他过程来模拟某些物理。阵列的尺寸应为D²×D²。我最初尝试过:
Ma, Mb = ( np.zeros([ pow(D, 2), pow(D,2)]) for i in range(2))
接着是
Ma = np . zeros ([ pow(D,2), pow(D,2)])
Mb = np . zeros ([ pow(D,2), pow(D,2)])
最后
Ma , Mb = [np . zeros ([ pow(D,2), pow(D,2)])]*2
我发现以不同方式定义数组会影响我的最终答案,只有最后的方式才能给出我期望的答案。前两个选项给了我荒谬的答案。这些不同的方法实际上是等同的还是我错过了什么?
编辑:
以下代码为:
for i in D_array:
for j in D_array:
for k in D_array:
for l in D_array:
Ma[k + D * j][i + D * l] = T[i][j][k][l]
Mb[k + D * l][i + D * j] = T[i][j][k][l]
其中T和D_array之前已定义。在此Ma和Mb经历SVD后,
答案 0 :(得分:4)
最后一种方式将Ma is Mb
返回true。我发现令人惊讶的是,你想要的是
基本上最后一个相当于Mb = Ma = np . zeros ([ pow(D,2), pow(D,2)])