On 10/24/2015 10:05 PM, Poul Riis wrote:
I have N points in 3D, organized in a list. I want to to point out the numbers 
of the two that have the smallest distance.
With scipy.spatial.distance.pdist I can make a list of all the distances, and I 
can point out the number of the minimum value of that list (see simple example 
below - the line with pts.append... should be indented three times). But I 
guess there is a standard (numpy?) routine which points out the numbers of the 
corresponding two points but I cannot find it. Can someone help?

Poul Riis




import numpy as np
import scipy
from scipy.spatial.distance import pdist


pts=[]
for i in range(-1,2):
     for j in range(-1,2):
         for k in range(-1,2):                 
pts.append((i+np.random.random()/10,j+np.random.random()/10,k+np.random.random()/10))
for i in range(0,len(pts)):
     print(pts[i])
distances=scipy.spatial.distance.pdist(pts)
n=np.argmin(distances)
for i in range(0,len(distances)):
     print(i,distances[i])
print('The minimum distance is: ',min(distances),' which has number ',n)


I won't claim to have the definitive answer but - is this a clustering problem? Did you look at any machine learning packages?

--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to