用j <向量化双和。 I + 1

时间:2018-03-09 15:13:03

标签: python python-2.7

我需要计算一个双和,现在我在双循环中进行如下操作:

k = 3

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

我想对这个总和进行矢量化,虽然我所坚持的是,我不只是对i和j的每个组合进行求和,而只是j&lt; I + 1。我该如何对此进行矢量化?

1 个答案:

答案 0 :(得分:1)

您要做的是在三角形func矩阵上求和函数k * k。以下是使用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那么大。