gpt4 book ai didi

python - 初始化转置 numpy 数组

转载 作者:太空宇宙 更新时间:2023-11-04 00:32:51 25 4
gpt4 key购买 nike

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

最佳答案

在我的实验中,选项 2 多花费了 50% 以上的时间。它也更难阅读。

选项 1 不错,但注意 W 将是数组 tmp 的 View 。这应该不是问题,除非你做了一些使它成为一体的事情,比如 tmp[0,0] = 0(它也修改了 W)。

我会去

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

它与带有 tmp 的版本同时运行(并且它仍然使 W 成为一个 View )但不会创建另一个名称来访问相同的数据。

关于python - 初始化转置 numpy 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45166400/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com