小编Yet*_*eti的帖子

在python中向量化6 for循环累积总和

数学问题是:

在此处输入图片说明

总和中的表达式实际上比上面的表达式复杂得多,但这是一个最小的工作示例,不会使事情复杂化。我已经使用6个嵌套的for循环在Python中编写了此代码,并且正如预期的那样,即使在Numba,Cython和朋友的帮助下,它的性能也很差(真正的形式效果很差,需要评估数百万次)。在这里,它是使用嵌套的for循环和累积和编写的:

import numpy as np

def func1(a,b,c,d):
    '''
    Minimal working example of multiple summation
    '''
    B = 0
    for ai in range(0,a):
        for bi in range(0,b):
            for ci in range(0,c):
                for di in range(0,d):
                    for ei in range(0,ai+bi):
                        for fi in range(0,ci+di):
                            B += (2)**(ei-fi-ai-ci-di+1)*(ei**2-2*(ei*fi)-7*di)*np.math.factorial(ei)


    return a, b, c, d, B
Run Code Online (Sandbox Code Playgroud)

表达控制与4个数字作为输入,并为func1(4,6,3,4)输出为B是21769947.844726562。

我到处寻找帮助,并找到了一些Stack帖子,其中包括一些示例:

NumPy中的外部产品:矢量化六个嵌套循环

向量化具有不同数组形状的Python / Numpy中的Triple for循环

Python向量化嵌套循环

我尝试使用从这些有用的帖子中学到的知识,但是经过多次尝试,我一直得出错误的答案。即使对其中一个和进行矢量化处理,也将为真正的问题带来巨大的性能提升,但是和范围不同的事实似乎使我无法接受。有人对如何进行此操作有任何提示吗?

python for-loop numpy vectorization

5
推荐指数
1
解决办法
396
查看次数

标签 统计

for-loop ×1

numpy ×1

python ×1

vectorization ×1