我在python中有一个函数(也使用scipy和numpy)定义为

import numpy as np
from scipy import integrate
LCDMf = lambda x: 1.0/np.sqrt(0.3*(1+x)**3+0.7)

我想把它从0积分到numpy数组中的每个元素,比如z = np.arange(0,100)
我知道我可以为每个元素编写一个循环
an=integrate.quad(LCDMf,0,z[i])

但是,我想知道是否有一种更快、更有效(更简单)的方法来处理每个numpy元素。

最佳答案

你可以把这个问题改写成一首颂歌。
python - 将函数与numpy数组的每个元素集成为集成的限制-LMLPHP
odeint函数可用于计算一系列F(z)z

>>> scipy.integrate.odeint(lambda y, t: LCDMf(t), 0, [0, 1, 2, 5, 8])
array([[ 0.        ],    # integrate until z = 0 (must exist, to provide initial value)
       [ 0.77142712],    # integrate until z = 1
       [ 1.20947123],    # integrate until z = 2
       [ 1.81550912],    # integrate until z = 5
       [ 2.0881925 ]])   # integrate until z = 8

09-07 19:09