Estoy empezando a aprender Python proveniente de un fondo de C++. Lo que estoy buscando es una forma rápida y fácil de encontrar el punto más cercano (vecino más cercano) de un punto de consulta multidimensional en una matriz 2D (numpy) de puntos multidimensionales (también matrices numpy). Sé que Scipy tiene un árbol k-d, pero no creo que esto sea lo que quiero. En primer lugar, voy a cambiar los valores de los puntos multidimensionales en la matriz 2D. En segundo lugar, la posición (coordenadas) de cada punto en la matriz 2D importa ya que también cambiaré sus vecinos.Vecino más cercano Buscar en Python sin árbol k-d
Podría escribir una función que atraviese la matriz 2D y mida la distancia entre el punto de consulta y los puntos en la matriz mientras sigo la pista del más pequeño (utilizando una función de distancia espacial scipy para medir la distancia). ¿Hay una función incorporada que hace esto? Estoy tratando de evitar iterar sobre las matrices en Python tanto como sea posible. También tendré numerosos puntos de consulta, por lo que habría al menos dos "bucles for": uno para recorrer los puntos de consulta y para cada consulta, un bucle para iterar a través de la matriz 2D y encontrar la distancia mínima.
Gracias por cualquier consejo.
Me gusta la primera sugerencia, pero estoy haciendo una consulta a la vez y actualizando valores en la matriz (similar a SOM). Podría usar cdist (X, Y) donde X es solo una consulta y actualizar la matriz y pasar a la siguiente consulta. Parece que Rtree está bien, pero no estoy seguro de cómo usarlo en mi situación. Me pregunto si hay paquetes de gráficos que permitan una búsqueda de un vecino más cercano con un punto externo. Podría usar un paquete de gráfico para hacer una retícula donde cada nodo sea un punto multidimensional. Algunas de las otras características de un paquete de gráficos serían útiles en mi programa – COM