使用某些数组从屏蔽数据中获取数据

时间:2018-10-19 10:55:49

标签: python-3.x numpy

我如何从具有某些数组的屏蔽数据中获取数据,例如我有这样的数据:

x = np.random.normal(90,120,[100,1])
y = np.random.normal(-11,21,[100,1])

我有2个像这样的框架数组:

x1 = np.array([50,0,150,200,50])
y1 = np.array([10,-50,-60,0,10])

我想从之前创建的2个数组的区域中获取文件

enter image description here

顺便说一句,我的完整脚本如下所示:

import numpy as np
import matplotlib.pyplot as plt
x = np.random.normal(90,120,[100,1])
y = np.random.normal(-11,21,[100,1])
x1 = np.array([50,0,150,200,50])
y1 = np.array([10,-50,-60,0,10])
area = (20*np.random.rand(100))**2
r = np.sqrt(x*x+y*y)
rb = np.sqrt(x1*x1+y1*y1)
area1 = np.ma.masked_where(r<rb,area)
area2 = np.ma.masked_where(r>=rb,area)

1 个答案:

答案 0 :(得分:1)

结帐matplotlib.path.Path.contains_points here。它正是您想要的。

以下是使用x,y,x1和y1定义的示例(您可以根据需要对其进行调整):

import matplotlib.path as path
import numpy as np

x = np.random.normal(90,120,[100,1])
y = np.random.normal(-11,21,[100,1])
points = np.append(x,y,axis=1)

x1 = np.array([50,0,150,200,50])
y1 = np.array([10,-50,-60,0,10])
vertices = np.array([x1, y1]).T
polygon = path.Path(vertices)

mask = polygon.contains_points(points)