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

标签 python numpy matplotlib

我有一大组数据点(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/

相关文章:

python - 如何在所有窗口中设置组合框的颜色

Python "if X == Y and Z"语法

python - 大多数系数为零时如何进行IIR滤波

python - math.fsum 用于多维数组

Matplotlib 调色板

python - Anaconda 运行时错误 : Python is not installed as a framework?

javascript - Flask 在不同项目运行时加载相同的 index.js 文件

python - 如何忽略一组字符直到遇到正则表达式中的指定字符?

python - 有没有办法为所有 Pandas 功能设置随机状态?

python - 如何在 python 中更改 "save the figure"的默认路径?