用j<i+1矢量化双和

2024-10-01 04:57:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要计算一个双和,现在我在双for循环中这样做,如下所示:

k = 3

sumterm = 0.0
for i in range(k):
    for j in range(i+1):
        sumterm = i+2*j

我想把这个和矢量化,但我坚持的是,我不仅仅是求I和j的所有组合的和,而是求j<;I+1的和。我该如何将其矢量化?你知道吗


Tags: inltforrange矢量化sumterm
1条回答
网友
1楼 · 发布于 2024-10-01 04:57:03

你要做的是在三角形矩阵上求一个函数的和。下面是使用for循环的方法,我稍微修改了它以适应我们的抽象。你知道吗

k = 3

summation = 0.0
for i in range(k + 1): # Loop from 0 to k
    for j in range(i + 1): # Loop from 0 to i
        summation += func(i, j) # Sum the value

通过用itertools.product而不是循环抽象矩阵,可以对求和进行矢量化。你知道吗

from itertools import product

summation = sum(func(i, j) for i, j in product(range(k + 1), repeat=2) if j <= i)

函数product返回一个迭代器,这是内存有效的,特别是当需要k变大时。你知道吗

相关问题 更多 >