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