当前位置:  开发笔记 > 编程语言 > 正文

集成在Python中返回数组的函数

如何解决《集成在Python中返回数组的函数》经验,为你挑选了0个好方法。

我有很多要集成的数据,并希望找到一种只用矩阵来完成所有操作的方法,并且愿意在准确性方面做出妥协以提高性能.我的想法是这样的:

import numpy
import scipy

a = np.array([1,2,3])

def func(x):
    return x**2 + x

def func2(x):
    global a
    return a*x

def integrand(x):
    return func(x)*func2(x)

integrated = quad(integrand, 0, 1)

所以我试图将每个元素集成到数组中integrand.

我知道有可能使用numpy.vectorize()这样的:

integrated = numpy.vectorize(scipy.integrate.quad)(integrand, 0, 1)

但我无法做到这一点.有没有办法在python中执行此操作?

那么现在我学到了更多的python我可以回答这个问题,如果有人碰巧稳定在它上面并且有同样的问题.这样做的方法是编写函数,好像它们将采用标量值,而不是向量作为输入.所以按照上面的代码,我们会有类似的东西

import numpy as np
import scipy.integrate.quad

a = np.array([1, 2, 3]) # arbitrary array, can be any size

def func(x):
    return x**2 + x

def func2(x, a):
    return a*x

def integrand(x, a):
    return func(x)*func2(x, a)

def integrated(a):
    integrated, tmp = scipy.integrate.quad(integrand, 0, 1, args = (a))
    return integrated

def vectorizeInt():
    global a
    integrateArray = []
    for i in range(len(a)):
        integrate = integrated(a[i])
        integrateArray.append(integrate)
    return integrateArray

并非您要集成的变量必须是函数的第一个输入.这是scipy.integrate.quad所必需的.如果要在方法上进行积分,则它是典型self(即x集成def integrand(self, x, a):)之后的第二个参数.还args = (a)需要告诉函数中quad的值.如果有很多参数,请说你只需按顺序放入参数.那就是.aintegrandintegranddef integrand(x, a, b, c, d):argsargs = (a, b, c, d)

推荐阅读
yzh148448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有