初始化转置的numpy数组
问题描述:
我想使用矩阵A
的奇异值分解。初始化转置的numpy数组
如果可能的话我会写:
V, S, W.T = np.linalg.svd(A)
但我不能初始化其调换的数组。 现在我有两个问题:
据我了解蟒蛇内部有针对此问题没有明显的解决方法。因为调用
W
的属性/方法需要初始化实例。 需要一些东西作为构造函数,如@property
属性。如果没有明显的解决方法,以下哪个选项更好/更习惯。
选项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)
答
选项2需要花费更多的超过50%的时间在我的实验。阅读也很难。
选项1是好的,但请注意W
将是数组tmp
的视图。这不应该是一个问题,除非你做了一件事,如tmp[0,0] = 0
(也修改W
)。
我会去与
W = np.linalg.svd(A)
W = W.T
这在同一时间与tmp
版本上运行(和它仍然使W上图),但不产生由相同的数据可以被访问的另一个名字。
你或许可以选择两种选择。 – Gribouillis