gpt4 book ai didi

python - 使用 numpy 加速 for 循环

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

下一个 for 循环如何通过 numpy 获得加速?我想这里可以使用一些奇特的索引技巧,但我不知道是哪一个(这里可以使用 einsum 吗?)。

a=0
for i in range(len(b)):
a+=numpy.mean(C[d,e,f+b[i]])*g[i]

编辑:C 是一个形状类似于 (20, 1600, 500) 的 numpy 3D 数组。d,e,f 是“有趣”点的索引(d,e,f 的长度相同,都在 900 左右)b 和 g 的长度相同(大约 50)。对 C 中索引为 d,e,f+b[i]

的所有点取均值

最佳答案

您可以使用以下技巧:

C[d, e][:, np.add.outer(f, b)].dot(g).diagonal().mean()

通过过早地采用将形成对角线的元素来进一步改进:

C[d, e][np.arange(len(d))[:, None], np.add.outer(f, b)].dot(g).mean()

关于python - 使用 numpy 加速 for 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26403884/

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