python - 如何将 scipy 与数组集成作为函数的一部分

标签 python arrays numpy scipy numerical-integration

我想在 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/

相关文章:

python - 在 Flask 中执行耗时函数时显示 ‘loading’ 消息

c - 如何在 C 中分配连续的二维字符串数组

java - 编写接受字符串并返回字符数组的方法时遇到问题

javascript - 全局变量表示未定义 - js

python - pandas 数据框列的最大数量相乘

python - 如何将列表作为环境变量传递?

python - Pandas :DataFrame.unstack 错误

python - 如何使用python以相同的顺序再次合并两个分离的数据帧

python - 如何在 Python 中将不同形状的数组相乘?

python - 舍入到 pandas 数据框中最接近的最小值