在给定边界的椭圆区域上离散化

Discretizing over the area of an ellipse given bounds

问题是我有一个中心 (x,y) 和一些标准偏差 sigma_{x1}sigma_{x2},我可以一起使用它们来绘制中心的高斯 3-sigma 置信区间(x,y)

我需要对这个椭圆体进行离散化,以便我可以将函数的预期值评估为 f(x,y)*p(x,y),但我不确定如何生成 xy”网”。我不确定这里的术语是否正确。

如果这是一个正方形,答案将是 np.linspace(start=min, stop=max) 应用 xy 的任意 min/max 值。我不完全确定如何处理非矩形形状?我最初的想法是在周围生成一个矩形区域,然后 select 点解决 ellipse equation returns something <=1 但我认为这不是最有效的实现方式这个。

注意:目前使用 python 3.6.9 和 numpy 1.19.4

我不认为你可以比你已经提出的方法更有效地做到这一点。要制作网格,您可以使用

x, y = np.mgrid[minx:maxx:step*1j, miny:maxy:step*1j]

这里mgrid基本上是np.linspace的多维版本。

那么您只需要丢弃椭圆外部的值并保留内部的值即可。使用逻辑索引“屏蔽”最简单:

mask = x**2 + y**2 < 1  # replace unit circle equation with ellipse equation
x, y = x[mask], y[mask]

然后您可以使用

评估您的期望值
ev = (f(x,y) * p(x, y)).sum()

(假设 fp 都可以处理向量作为输入)。