Как улучшить выбор точки с критериями внутри сетки? - PullRequest
0 голосов
/ 07 июля 2019

Представьте, что у вас есть регулярная сетка 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()

Выход должен быть точно таким же, как этот

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...