python - 缺失元素的向量求和

标签 python numpy vectorization

我希望求解以下和s,它是按元素定义的:

enter image description here

其中 zlambda 的元素是复数类型,N 是实数和向量的长度。这可以在循环中完成,但效率很低。这是我的解决方案:

import numpy as np

N = 10
z = np.random.rand(N)
lamb = np.random.rand(N)

s = []
indexs = np.arange(N)

for idx in indexs:

    summand = np.sum(1/(z[idx] - lamb[indexs[indexs!=idx]]))

    s.append(summand/N)

s = np.array(s)

有人能给我指出完整的 numpy 解决方案吗?

最佳答案

import numpy as np

N = 10
z = np.random.rand(N)
lamb = np.random.rand(N)
ss = 1 / np.subtract.outer(z, lamb)
np.fill_diagonal(ss, 0)
ss = ss.sum(axis=1) / N

关于python - 缺失元素的向量求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61328664/

相关文章:

c - 作为不同可能矢量化的函数的运行时间增益

c++ - 如何将 c 数据类型转换为 neon 数据类型

python - 在具有相同值的非零元素之间的numpy数组中填充零

python - 如何移动 matplotlib 图中的一条线?

Python 3 - 将楼梯从右对齐转换为左对齐,由#符号和空格组成

python - pandas 和 numpy 的问题在哪里条件/多个值?

python - 在每个示例上使用 tensorflow 获得相同的预测

python - 就地放置 Pandas 列会触发SettingWithoutCopy 警告

python - 如何使用字典键的范围?

python - 如何在Python中一次性乘以多个矩阵?