【问题标题】:Integrating using scipy's trapz function使用 scipy 的 trapz 函数进行集成
【发布时间】:2013-06-23 00:10:27
【问题描述】:

我目前正在尝试集成一个由 XY 点对组成的函数。随意看看:https://dl.dropboxusercontent.com/u/2635172/example.csv

我正在使用 pandas 读取文件

data_df = pd.read_csv("example.csv", sep="\t", index_col=0, names=["test"])

如果仔细观察,连续 x 值之间的间距是相同的,因此我可以将积分写成如下:

integral = integrate.trapz(data_df.values.transpose())*data_df.index[1]

其中integrate 是从 scipy 导入的,data_df.index[1] 指的是间距。返回以下值:189274.48501691

如果我按照以下方式执行集成:

  integrate.trapz(data_df.values.transpose(), x=data_df.index)

返回一个完全不同的值 (5.846689e+08)。任何想法为什么会这样?

请注意,第一个结果应该是正确的。这也由 MATLAB 的 trapz 函数返回。

【问题讨论】:

    标签: python numpy scipy numerical-integration


    【解决方案1】:

    您必须使用来自 Index 实例的值:

    integrate.trapz(data_df.values.transpose(), x=data_df.index.values)
    #[189274.48501691408]
    

    如果您将 data_df.indexIndex 转换为 ndarray,它也可以:

    integrate.trapz(data_df.values.transpose(), x=data_df.index.view(pd.np.ndarray))
    #[189274.48501691408]
    

    【讨论】:

    • 谢谢!当我只传递 data_df.index 对象时使用什么值?
    • 它也是一个数组,但它的行为在某种程度上与集成函数不兼容。我已经打开as issue in GitHub for this question,谢谢!
    猜你喜欢
    • 2020-11-27
    • 2017-10-06
    • 2013-06-08
    • 1970-01-01
    • 2014-06-16
    • 1970-01-01
    • 2019-08-31
    • 2020-08-02
    • 2019-08-12
    相关资源
    最近更新 更多