首页 > 解决方案 > 如何创建一个 numpy 数组,该数组对应于一个点是否在一个 numpy 多边形数组内?

问题描述

这是我的尝试,但我得到了错误 "AttributeError: 'numpy.ndarray' object has no attribute 'contains'"

如果你们中的任何人可以帮助我理解如何'y'在此代码中定义它是一个 numpy 数组,其中 1 对应于包含指定点的多边形的索引,0 对应于不包含指定点的多边形的索引我会很感激。

polygonss=[]
for i in range(0, len(verts)):
    polygonc = Polygon(verts[i])
    print (polygonc)
    polygonss.append(polygonc)
print (polygonss)
p=np.array(polygonss)
print (p)
vertsf=meshinformation_fine.celltoverticesandcentroid(0)[0]
point = Point(vertsf[0])
y=np.where(p.contains(point), 0, 1)
print (y)

标签: pythonarraysnumpy

解决方案


一个 numpy 对象数组在这里对你不是特别有用,你也可以用列表理解来完成这个过程

y = [p.contains(point) for p in polygonss]

但是,如果您要为大量点执行此操作,那么我鼓励您阅读geopandas,它使您能够对几何图形进行矢量化计算并将它们应用于表格数据。


推荐阅读