初始化转置的numpy数组

2024-04-19 20:16:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我想使用矩阵A的奇异值分解。你知道吗

如果可能的话,我会写:

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

但我不能用它的转置来初始化数组。 现在我有两个问题:

  1. 据我所知,python内部没有明显的解决方法。因为调用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)

Tags: 实例方法属性选项np方案矩阵property
1条回答
网友
1楼 · 发布于 2024-04-19 20:16:02

选项2在我的实验中花费了超过50%的时间。它也更难阅读。你知道吗

选项1很好,但是请注意W将是数组tmp的视图。这应该不是一个问题,除非你做了一些使之成为问题的事情,比如tmp[0,0] = 0(它也修改了W)。你知道吗

我会和你一起去

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

它与使用tmp的版本同时运行(并且它仍然使W成为一个视图),但不会创建另一个名称来访问相同的数据。你知道吗

相关问题 更多 >