Проблема, как упоминал Ralvi, заключается в том, что points
- это, скорее всего, список Python, а не массив numpy. Следующий код не выдает ошибок:
import numpy as np
import math
from random import randint
def euclidean_distance(point1, point2):
return math.sqrt(sum(math.pow(a - b, 2) for a, b in zip(point1, point2)))
def nearest_neighbor(p, points, k=3):
"""Return the nearest neighbour of a point"""
distances = []
for point in points:
dist = euclidean_distance(p, point)
distances.append(dist)
distances = np.array(distances)
ind = np.argsort(distances)
print(p)
return points[ind[0:k]]
# generate an array of random points
points = 0 + np.random.rand(100, 2) * 50
print(nearest_neighbor(points[randint(0, len(points))], points, k=3))