gpt4 book ai didi

python - 如何确定哪些点在多边形内,哪些不在(大量点)?

转载 作者:IT老高 更新时间:2023-10-28 20:38:44 33 4
gpt4 key购买 nike

我有一大组数据点(100,000+)存储在二维 numpy 数组中(第一列:x 坐标,第二列:y 坐标)。我还有几个一维数组存储每个数据点的附加信息。我现在想从这些 1D 数组的子集创建图,其中仅包含给定多边形中的点。

我想出了以下既不优雅也不快速的解决方案:

#XY is the 2D array.
#A is one of the 1D arrays.
#poly is a matplotlib.patches.Polygon

mask = np.array([bool(poly.get_path().contains_point(i)) for i in XY])

matplotlib.pylab.hist(A[mask], 100)
matplotlib.pylab.show()

您能帮我改进这段代码吗?我尝试使用 np.vectorize 而不是列表理解,但无法使其正常工作。

最佳答案

使用 matplotlib.nxutils.points_inside_poly ,它实现了一个非常有效的测试。

matplotlib FAQ 上对这个 40 年历史的算法的示例和进一步说明.

更新:请注意,points_inside_poly 自 matplotlib 1.2.0 版起已弃用。使用matplotlib.path.Path.contains_points而是。

关于python - 如何确定哪些点在多边形内,哪些不在(大量点)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8833950/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com