Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在区域上积分求概率_Python_Integration - Fatal编程技术网

Python 在区域上积分求概率

Python 在区域上积分求概率,python,integration,Python,Integration,我有一个联合PDFp(x,y),其中0可以使用flist中每个颜色/数字的出现作为指示。我假设flist是一个二维列表 import numpy as np farray = np.array(flist) prob_yellow = (farray==1).sum()/ (farray.shape[0] * farray.shape[1]) prob_purple = (farray==-1).sum()/ (farray.shape[0] * farray.shape[1]) prob_t

我有一个联合PDF
p(x,y)
,其中
0可以使用flist中每个颜色/数字的出现作为指示。我假设flist是一个二维列表

import numpy as np

farray = np.array(flist)
prob_yellow = (farray==1).sum()/ (farray.shape[0] * farray.shape[1])
prob_purple = (farray==-1).sum()/ (farray.shape[0] * farray.shape[1])
prob_turqoise = (farray==0).sum()/ (farray.shape[0] * farray.shape[1])
另一种方法是,若你们有分割彩色平面的x和y线阵列,那个么你们可以进行数值积分。例如:

from scipy import integrate
import numpy as np

x = np.arange(0,1,0.1)
y_purple = np.exp(-x)
prob_purple = integrate.simps(y_purple,x)

编辑:我现在知道flist的分布并不均匀。在这种情况下,我将首先将其转换为均匀分布的列表,然后使用前面提到的第一种方法

我创建点和flist:

points = np.array([[0,0],[0.4, 0.5],[0.5, 0.6],[1, 1]])
flist = np.random.randint(-1,2, size=len(points))
然后进行插值:

import scipy.interpolate as intp
fintp = intp.NearestNDInterpolator(points, flist)

x = np.linspace(0,1,6)
y = np.linspace(0,1,6)
xx, yy = np.meshgrid(x, y)
positions = np.column_stack((xx.ravel(),yy.ravel()))

f_evenly = fintp(positions).reshape(len(x), len(y))
并计算概率:

prob_yellow = (f_evenly==1).sum()/ (f_evenly.shape[0] * f_evenly.shape[1])
prob_turqoise = (f_evenly==0).sum()/ (f_evenly.shape[0] * f_evenly.shape[1])
prob_purple = (f_evenly==-1).sum()/ (f_evenly.shape[0] * f_evenly.shape[1])
检查结果:

plt.imshow(f_evenly, extent=[0,1,0,1])
plt.show()
print('probabilities: \nyellow: %.2f\nturqoise: %.2f\npurple: %.2f'%(prob_yellow,  prob_turqoise, prob_purple))


你为什么不把每种颜色的点数除以总点数呢?若它们是相等分布的,若你们有足够的点,你们会找到一个很好的概率近似(全空间上的积分)@Alexis,但你们有一个概率分布。如果概率分布是常数,你的方法是有效的。哦,是的,我在考虑蒙特卡罗,但是它不起作用,我不明白为什么。如果你想要一个概率落入一个彩色区域,那么该区域是如何创建的并不重要?@Guimoute
flist
中的点不是由
p(x,y)
生成的,而是均匀分布的。计算黄色的点数并除以总点数将不考虑概率分布。关于您的第一个建议,它将不起作用,因为列表
flist
不是由概率分布生成的。关于你的第二个建议,这就是整个问题——我没有这一行。我为非均匀分布的flist添加了一个选项
probabilities: 
yellow: 0.47
turqoise: 0.36
purple: 0.17