【问题标题】:Deleting points on grid outside of boundary condition - Python删除边界条件之外的网格上的点 - Python
【发布时间】:2018-03-13 09:31:44
【问题描述】:

我有一个包含在 pandas 数据框中的点网格(例如 (1,1)、(1,2)、(1,3)...(100,99)、(100,100)),并且也导出为 .csv 文件。

然后我有一个边界条件,例如这个网格中心有一个直径为 25 的圆。我希望能够删除圆外的所有点,并将内部的点保留在一个新的数据框。

我可以得到圆的边界,xmin,xmax,ymin,ymax,但是当我删除与此相关的点时,我得到一个正方形(由于最小/最大值是整数,只能找到最远中心点)。

是否可以保存圆内的所有点?最好使用可以应用于椭圆等的通用方法。

编辑:我找到了这个,类似:How to delete a set of meshgrid points inside a circle?

但依赖于在代码中输入的圆的尺寸,所以不是通用的。由于我有形状的边界点,我必须计算它,并假设它是圆形的(它可能并不总是如此)。有没有办法对此进行调整,以便我可以使用边界点创建一个“填充”区域,然后执行布尔运算?

【问题讨论】:

    标签: python pandas dataframe data-manipulation


    【解决方案1】:

    既然你的问题是……

    是否可以保存圆内的所有点?

    是的,这是可能的,并且有一个公式。 distance_from 下面的函数是二维平面的基本欧式距离。

    def encloses(center_of_circle, vector2D, radius_of_circle):
        return distance_from(center_of_circle, vector2D) <= radius_of_circle
    

    如果vector2D 在圆中,这个函数encloses() 将返回True。如果不是,则为假。用它过滤你的 pandas DataFrame。

    我怀疑,当你得到一个正方形而不是一个圆时,你正在计算公式 encloses() 一个正方形,而不是一个圆......

    【讨论】:

    • 感谢您的帮助!我得到一个正方形的原因是因为我只是找到了离中心最远的点,并删除了除此之外的任何东西(所以 xmin,ymin 做了一个角,而不是一个圆形)。是否可以并排修改此方法以用于两个圆圈?因为一组点总是在另一个圆圈之外。
    • 对2个圆进行操作,合并点的DataFrame不重复?然后,您将在您的圈子中拥有一个包含点的 DataFrame。
    • @Mikeh12 你什么时候完成,如果答案对你有帮助:我邀请你通过接受答案来关闭它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-07
    • 2020-02-09
    相关资源
    最近更新 更多