Python 如何将P(x,y)与x,y,P(x,y)作为数组进行集成

Python 如何将P(x,y)与x,y,P(x,y)作为数组进行集成,python,matplotlib,numpy-ndarray,numerical-integration,Python,Matplotlib,Numpy Ndarray,Numerical Integration,基本上,我有一组数据(4列)对应于各种实验结果。 第一、第二和第三列是x、y和p;其中p表示概率p(x,y)。最后一列是p上的错误 现在,我想找到的是 或 也就是说,我想对我的数据执行符号集成,因为我想绘制它的结果 我的一些数据: x y p ep 0 2.967330 2549.603175 1.0 1.00000 1 2.987216 2549.603175 0.0 0.00000 2 3.007102 2549.603175 0.0

基本上,我有一组数据(4列)对应于各种实验结果。 第一、第二和第三列是
x
y
p
;其中
p
表示概率
p(x,y)
。最后一列是
p
上的错误

现在,我想找到的是

也就是说,我想对我的数据执行符号集成,因为我想绘制它的结果

我的一些数据:

x y p ep
0   2.967330  2549.603175     1.0   1.00000
1   2.987216  2549.603175     0.0   0.00000
2   3.007102  2549.603175     0.0   0.00000
3   3.026989  2549.603175     3.0   1.73205
4   3.046875  2549.603175     0.0   0.00000
5   3.066761  2549.603175     4.0   2.00000
6   3.086648  2549.603175     1.0   1.00000
8   3.126420  2549.603175    10.0   3.16228
9   3.146307  2549.603175    24.0   4.89898
10  3.166193  2549.603175    35.0   5.91608
11  3.186080  2549.603175    71.0   8.42615
12  3.205966  2549.603175   118.0  10.86280
13  3.225852  2549.603175   188.0  13.71130
14  3.245739  2549.603175   337.0  18.35760
15  3.265625  2549.603175   475.0  21.79450
16  3.285511  2549.603175   706.0  26.57070
17  3.305398  2549.603175  1093.0  33.06060
18  3.325284  2549.603175  1536.0  39.19180
19  3.345170  2549.603175  2239.0  47.31810
在x轴上,数据的等距约为
-0.01988637

在《数据科学的Python伴侣》一书中 D.Zinoviev认为“部分和是积分的粗略等价物”。我想用这个部分和的方法,但我不知道怎么用

谢谢大家


问候。

非常感谢您的见解、问题和评论。我已经找到了解决办法,我会解释给别人看

“费奥多兰”的话给了我一个想法。我决定用熊猫。 以下方面发挥了作用:

import pandas as pd
df = pd.read_excel(r'....')
df.columns = ['x','y','p','ep']
df = pd.DataFrame(df)

df['p_x'] = df.iloc[:,[1]+[2]].sum(axis=1)
df.plot(kind = 'line', x = 'x', y = 'p_x', color = 'red')
plt.show()
再次感谢。我希望它对其他人也有用。 问候


PS:正如你可能已经猜到的,同样可以获得p_y。

非常感谢你的见解、问题和评论。我已经找到了解决办法,我会解释给别人看

“费奥多兰”的话给了我一个想法。我决定用熊猫。 以下方面发挥了作用:

import pandas as pd
df = pd.read_excel(r'....')
df.columns = ['x','y','p','ep']
df = pd.DataFrame(df)

df['p_x'] = df.iloc[:,[1]+[2]].sum(axis=1)
df.plot(kind = 'line', x = 'x', y = 'p_x', color = 'red')
plt.show()
再次感谢。我希望它对其他人也有用。 问候


PS:正如你可能已经猜到的,同样可以得到p_y。

你说你想做数值积分,但是如果你想得到p(x,y)dx,那就意味着符号积分,因为y仍然会保留在结果中。你确定你不想要\int\int P(x,y)dx dy吗?还有一件事:你的数据在我看来很奇怪:如果你有一个函数P(x,y),你应该有一个具有Nx*Ny值的2D数组,但是你有两个具有Nx+Ny值的1D数组(不包括P及其错误)。@Feodran My bad。。。它们的等距约为:-0.01988637。(对于x)就我的数据的形状评论你之前的问题:我完全同意你的看法,也许我的措辞有点奇怪,因为英语不是我的母语。我的主管(我正在实习)说第三列代表概率P(x,y),但是我同意你的观点,但是我的数据集没有任何修改。。。我应该重塑P(x,y)以在二维阵列上屈服吗?等等,我刚刚意识到:你们所有的y值都是相同的。因此,您可以对第一列求和,并相互乘以dx=0.01988。如果你做cumsum(),那么你得到的定积分是x作为积分的上限(作为x的函数)。嗨@BLDMoh,你的积分域是什么?你有一个函数,你想在一个矩形、一个圆、一个三角形或整个域上积分,或者…你说你想做数值积分,但是如果你想得到P(x,y)dx,那就意味着符号积分,因为y仍然会保留在结果中。你确定你不想要\int\int P(x,y)dx dy吗?还有一件事:你的数据在我看来很奇怪:如果你有一个函数P(x,y),你应该有一个具有Nx*Ny值的2D数组,但是你有两个具有Nx+Ny值的1D数组(不包括P及其错误)。@Feodran My bad。。。它们的等距约为:-0.01988637。(对于x)就我的数据的形状评论你之前的问题:我完全同意你的看法,也许我的措辞有点奇怪,因为英语不是我的母语。我的主管(我正在实习)说第三列代表概率P(x,y),但是我同意你的观点,但是我的数据集没有任何修改。。。我应该重塑P(x,y)以在二维阵列上屈服吗?等等,我刚刚意识到:你们所有的y值都是相同的。因此,您可以对第一列求和,并相互乘以dx=0.01988。如果你做cumsum(),那么你得到的定积分是x作为积分的上限(作为x的函数)。嗨@BLDMoh,你的积分域是什么?你有一个函数,你想在一个矩形,一个圆,一个三角形,或者整个域上积分,或者。。。