Представьте, что у вас есть регулярная сетка 10x10, вы хотите работать с геометрией, но у вас также есть некоторые произвольные точки, такие как (2.3,6.9) ... тогда есть критерий выбора, который говорит, что если точка регулярной сетки имеетрадиальное расстояние меньше 3, точка в обычной сетке должна быть удалена.
Я пытался, но я считаю, что мой путь неэффективен, это займет много времени, как его улучшить?
import numpy as np
import matplotlib.pyplot as plt
def radius_selection(x0,y0,x1,y1,radius_criteria):
r=((x0-x1)**2+(y0-y1)**2)**0.5
if r<radius_criteria:
boolean=1
else:
boolean=0
return boolean
points=np.array([[1,2],[10,4],[5,6]])
x=range(-2,12,1)
y=range(-2,12,1)
XX,YY=np.meshgrid(x,y)
mesh_array=[]
for nx in x:
for ny in y:
mesh_array.append([nx,ny])
mesh_array=np.array(mesh_array)
radius_criteria=2
for xi in range(len(points)):
to_delete=[]
for yi in range(len(mesh_array)):
boolean=radius_selection(points[xi][0],points[xi][1],mesh_array[yi][0],mesh_array[yi][1],radius_criteria)
if boolean==1:
to_delete.append(yi)
mesh_array=np.delete(mesh_array, to_delete, 0)
plt.plot(points[:,0],points[:,1],'or')
plt.plot(mesh_array[:,0],mesh_array[:,1],'ok')
plt.show()
Выход должен быть точно таким же, как этот