我目前正在編寫一個程序,其中定義了兩個數組,然後進行奇異值分解,然後進行其他一些處理以模擬一些物理。陣列的尺寸應爲D²×D²。我最初嘗試:依次爲什麼這些在Python中定義多個數組的方法給出了不同的答案?
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)]) for i in range(2))
最後
Ma , Mb = [np . zeros ([ pow(D,2), pow(D,2)])]*2
我發現,以不同的方式定義數組影響了我最後的答案,只有最後的辦法給我我期待的答案。前兩個選項給我無意義的答案。這些不同的方法實際上是否相同,或者我錯過了什麼?
編輯:
後面是代碼:其中T和D_array先前被定義
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]
。此後Ma和Mb經歷SVD,
這是非常不尋常的''模塊名,並從它的功能,但它是有效的蟒蛇之間。大多數程序員會比'np更喜歡'np.zeros'。 zeros'!另外'pow(D,2)== D ** 2'。 –
定義「無意義」。你期待什麼**?你得到了什麼? –
你得到兩個引用到同一個對象,很常見的問題 –