初始化转置的numpy数组

问题描述:

我想使用矩阵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

选项2需要花费更多的超过50%的时间在我的实验。阅读也很难。

选项1是好的,但请注意W将是数组tmp的视图。这不应该是一个问题,除非你做了一件事,如tmp[0,0] = 0(也修改W)。

我会去与

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

这在同一时间与tmp版本上运行(和它仍然使W上图),但不产生由相同的数据可以被访问的另一个名字。