gpt4 book ai didi

python - 通过向量的差异对矩阵创建进行向量化(例如,对于 numpy)

转载 作者:行者123 更新时间:2023-12-05 07:04:26 29 4
gpt4 key购买 nike

我经常需要根据给定的向量 v[i] 计算矩阵 A[i,j],方法是:

A[i, j] = v[j] - v[i]

这在嵌套循环中很简单,但我想对其进行矢量化。到目前为止,我只想出了一个相当难看的解决方案,即另外创建两个矩阵,其中 v 在每一行/列中重复,因此我可以使用简单的逐元素矩阵加法。

这里是一个 numpy 的例子:

import numpy as np
length = 10
v = np.random.random(length)
vjMatrix = np.broadcast_to(v, (length, length))
viMatrix = np.transpose(vjMatrix)

A = vjMatrix - viMatrix
print(A)

但是,我希望有一个更优雅的解决方案,只是我没有看到。我浏览了很多线程,但没有找到特别合适的。

谢谢!

最佳答案

如果我理解你的问题是正确的,你目前填充数组 A 就像:

import numpy as np

length = 100
np.random.seed(123)
v = np.random.rand(length)

vjMatrix = np.broadcast_to(v, (length, length))
viMatrix = np.transpose(vjMatrix)

A = vjMatrix - viMatrix

如果这是您想要的,您可以通过广播向量 v 来替换循环和显式创建 v 矩阵:

A_new = v - v[:, None]
print(np.all(A == A_new))
# Out: True

关于python - 通过向量的差异对矩阵创建进行向量化(例如,对于 numpy),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62930819/

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