如何用python判断某点被包含在一个多边形中

参考自/questions/21566610/crop-out-partial-image-using-numpy-or-scipy

判断某点是否处于某个多边形内或边界上在matlab中可以方便地用inpolygon函数达到,python的某些模块中有类似的功能。

import numpy as np

from matplotlib.path import Path

xc = np.array([219.5,284.8,340.8,363.5,342.2,308.8,236.8,214.2])

yc = np.array([284.8,220.8,203.5,252.8,328.8,386.2,382.2,328.8])

xycrop=np.vstack((xc,yc)).T #这里的vstack就是垂直叠加组合形成一个新的数组,T是转置

rnd=np.random.randn(50)*50.0+250.0

rnd=rnd.reshape(25,2)

pth=Path(xycrop,closed=False)

mask=pth.contains_points(rnd) # mask里包含了对应点是否包含在多边形中的逻辑数值

可以用rnd[mask,:]获得包含在多边形内的点,用rnd[~mask,:]获得在外面的点。

python中根据某个list排序另一个list

https://s tackoverflow.com

/questions/6618515/sorting-list-based-on-values-from-another-list

比如有如下两个list:

people =['Jim','Pam','Micheal','Dwight']

ages =[27,25,4,9]

按ages排序

方法一:

[x for _,x in sorted(zip(ages,people))]

方法二:

import numpy as np

people=np.array(people)

ages=np.array(ages)

indx=ages.argsort()

sortedpeople=people[indx]

方法三:

sorted_index=sorted(range(len(age)),key=lambda x:people[x])

[people[i] for i in sorted_index]



顺便鄙视一下百度和墙。