我想在 scipy 中使用积分命令,并有一个函数可以与数组中的每个元素相乘一次。
import math
import matplotlib.pyplot as plt
import numpy as np
import scipy.integrate as integrate
from scipy.integrate import quad, romberg
import scipy.special as special
from numpy import sqrt
yes = np.array([0,1])
def integrate(x,yes):
return x+yes
result = quad(integrate,0,1,args=(yes))
print(result)
当我这样做时,我收到错误 只有 size-1 数组可以转换为 Python 标量
但是如果我这样做
import math
import matplotlib.pyplot as plt
import numpy as np
import scipy.integrate as integrate
from scipy.integrate import quad, romberg
import scipy.special as special
from numpy import sqrt
yes = np.array([0])
def integrate(x,yes):
return x+yes
result = quad(integrate,0,1,args=(yes))
print(result)
它给了我这个(0.5, 5.551115123125783e-15) 这正是我想要的,但我希望它适用于数组中的每个元素。
有没有办法写一个for循环? 我也听说过 scipy.integrate.quad_vec,但那不起作用。预先感谢您
最佳答案
您可以使用quadpy ,它是完全矢量化的。只需确保您的函数 f
,如果给定特定长度/形状的输入 x
,则返回形状 range_shape + x.shape
的对象>。结果将具有 range_shape
形状。
import numpy as np
from quadpy import quad
def f(x):
return np.add.outer(np.array([0, 1]), x)
val, err = quad(f, 0, 1)
print(val)
[0.5 1.5]
关于python - 如何将 scipy 与数组集成作为函数的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60030437/