Numpy 有没有办法将scipy集成存储为函数?

Numpy 有没有办法将scipy集成存储为函数?,numpy,parallel-processing,scipy,Numpy,Parallel Processing,Scipy,当我需要计算积分并运行数千次循环时,我遇到了一个问题 该功能的原型是: func_integrated=lambda t:scipy.integrate.quad(func,t,1) 但是,如果我想将func_integrated馈送到一个数组中,这意味着我必须数千次运行此集成,这不是很有效。毕竟,从t到t-dt的序列大约是func(t)*dt 我的猜测是这样写: def功能集成(func,arr): arr=np.翻转(arr,0)#翻转以从后向前计数表格 out\u arr=np.arra

当我需要计算积分并运行数千次循环时,我遇到了一个问题

该功能的原型是:

func_integrated=lambda t:scipy.integrate.quad(func,t,1)
但是,如果我想将
func_integrated
馈送到一个数组中,这意味着我必须数千次运行此集成,这不是很有效。毕竟,从
t
t-dt
的序列大约是
func(t)*dt

我的猜测是这样写:

def功能集成(func,arr):
arr=np.翻转(arr,0)#翻转以从后向前计数表格
out\u arr=np.array([0])
对于范围(1,len(arr))中的i:
增量=arr[i-1]-arr[i]
out_arr=np.hstack((out_arr,increment*func(arr[i-1]))
返回np.cumsum(out\u arr)
但是,这不是通用的,仍然需要循环。我想知道是否有任何
scipy
numpy
方法可以更有效地处理此问题


另外,我知道sympy的方法。然而,这严重依赖于内置函数,因此该方法很难普遍适用。

列表附加比重复的hstack更有效。你能写出
func
这样它一次只取一个点数组而不是一个点数组吗?所以你想对一组范围进行积分
quad
适用于一个范围,可以选择最佳积分间隔等。但是如果您能够在一组已知的值上计算
func
,那么您的
cumsum
的某些版本应该会更好。如果一次调用就可以在所有积分值上计算
func
,则更好。迭代调用
func
的速度较慢。您可以对数组进行排序,然后在连续的区间调用
quad
,并累加这些值
quad
接受
参数,但显然不会在这些点返回积分。我不知道其他积分器是否返回这些值。你必须在每个数组值上计算函数。但你是否也需要在两个点之间进行评估,以获得足够的准确度?类似于
quad
的功能会为您解决准确性问题。在多次评估函数的准确性和成本之间存在折衷。列表附加比重复hstack更有效。你能写出
func
这样它一次只取一个点数组而不是一个点数组吗?所以你想对一组范围进行积分
quad
适用于一个范围,可以选择最佳积分间隔等。但是如果您能够在一组已知的值上计算
func
,那么您的
cumsum
的某些版本应该会更好。如果一次调用就可以在所有积分值上计算
func
,则更好。迭代调用
func
的速度较慢。您可以对数组进行排序,然后在连续的区间调用
quad
,并累加这些值
quad
接受
参数,但显然不会在这些点返回积分。我不知道其他积分器是否返回这些值。你必须在每个数组值上计算函数。但你是否也需要在两个点之间进行评估,以获得足够的准确度?类似于
quad
的功能会为您解决准确性问题。在多次评估函数的准确性和成本之间存在权衡。