2017-07-18 47 views
2

我想使用矩陣A的奇異值分解。初始化轉置的numpy數組

如果可能的話我會寫:

V, S, W.T = np.linalg.svd(A) 

但我不能初始化其調換的數組。 現在我有兩個問題:

  1. 據我瞭解蟒蛇內部有針對此問題沒有明顯的解決方法。因爲調用W的屬性/方法需要初始化實例。 需要一些東西作爲構造函數,如@property屬性。

  2. 如果沒有明顯的解決方法,以下哪個選項更好/更習慣。

選項1:

V, S, tmp = np.linalg.svd(A) 
W = tmp.T 

選項2:

V, S, W = np.empty(...), np.empty(...), np.empty(...) 
V[:, :], S[:, :], W.T[:, :] = np.linalg.svd(A) 
+0

你或許可以選擇兩種選擇。 – Gribouillis

回答

3

選項2需要花費更多的超過50%的時間在我的實驗。閱讀也很難。

選項1是好的,但請注意W將是數組tmp的視圖。這不應該是一個問題,除非你做了一件事,如tmp[0,0] = 0(也修改W)。

我會去與

W = np.linalg.svd(A) 
W = W.T 

這在同一時間與tmp版本上運行(和它仍然使W上圖),但不產生由相同的數據可以被訪問的另一個名字。