gpt4 book ai didi

python - Numpy:以向量形式重写外积和对角线加法

转载 作者:行者123 更新时间:2023-12-01 00:16:40 26 4
gpt4 key购买 nike

假设X是:

X = np.asarray(
[0.5, 0.5],
[0.87070241, 0.12929759],
[0.97738616, 0.02261384],
[0.99200957, 0.00799043]], dtype=np.float32)

对于每一行,我想将一行转换为对角矩阵并从中减去外积,如下所示:

np.diagflat(X[i, :]) - np.outer(X[i, :], X[i, :])

对于任何索引i

当然,我可以在 i 上编写一个 for 循环,但是有没有办法以矢量化形式实现它?

我发现,看来我可以将减去的部分重写为:

X.T[:, None, :] * X.T[None, :]

但仍然不知道如何在不添加 for 循环的情况下正确添加 diagflat 或其等效项。

最佳答案

可能有一种更易读的方式,但是:

(np.eye(2) * X[:, np.newaxis]) - (X[:, np.newaxis]) * X[..., np.newaxis]

应该做你想做的事。

编辑:从我最初的答案 (np.eye(2)[np.newaxis] - X[:, np.newaxis]) * X[..., np.newaxis] 经过OP修正后。

关于python - Numpy:以向量形式重写外积和对角线加法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59288962/

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