为什么在Python中定义多个数组的这些方法会给出不同的答案?

时间:2016-04-09 14:58:12

标签: python numpy

我目前正在编写一个程序,其中定义了两个数组,然后进行奇异值分解,然后进行一些其他过程来模拟某些物理。阵列的尺寸应为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后,

1 个答案:

答案 0 :(得分:4)

最后一种方式将Ma is Mb返回true。我发现令人惊讶的是,你想要的是

基本上最后一个相当于Mb = Ma = np . zeros ([ pow(D,2), pow(D,2)])

相关问题