【问题标题】:Discretizing over the area of an ellipse given bounds在给定边界的椭圆区域上离散化
【发布时间】:2021-03-16 13:36:01
【问题描述】:

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

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

如果这是一个正方形,那么答案将是应用np.linspace(start=min, stop=max) 来获得xy 的任意最小值/最大值。我不完全确定如何处理非矩形形状?我最初的想法是在周围生成一个矩形区域,然后选择解决ellipse equation 的点返回

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

【问题讨论】:

    标签: python python-3.x numpy ellipse discretization


    【解决方案1】:

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

    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 都可以处理向量作为输入)。

    【讨论】:

    • 感谢所有提示!如果没有别的,它会更有效,因为我不会或多或少地使用 for 循环。
    猜你喜欢
    • 1970-01-01
    • 2010-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-07
    • 1970-01-01
    • 1970-01-01
    • 2019-12-24
    相关资源
    最近更新 更多