使用scipy trapz函数进行集成

时间:2013-06-22 14:54:08

标签: python numpy scipy numerical-integration

我目前正在尝试集成一个由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]

从scipy导入integratedata_df.index[1]指的是间距。返回以下值:189274.48501691

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

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

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

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

1 个答案:

答案 0 :(得分: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]