我有一大堆数据点(100,000+)存储在一个二维numpy数组中(第一列:x坐标,第二列:y坐标).我还有几个1维数组存储每个数据点的附加信息.我现在想要从这些一维数组的子集创建图,其中只包含给定多边形中的点.
我提出了以下解决方案,既不优雅也不快:
#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()
Run Code Online (Sandbox Code Playgroud)
你能帮我改进一下这段代码吗?我尝试使用np.vectorize而不是列表理解,但无法让它工作.