Код Senior NumPy: массивы и векторизация обновлено
Попарные расстояния через broadcasting
Условие
Даны точки pts (список [x, y]). Для каждой точки верните индекс ближайшей другой точки (евклидово расстояние). При равенстве берите меньший индекс. Если точка одна, верните [-1]. Решите через broadcasting, без двойного цикла.
Примеры
nearest([[0, 0], [1, 0], [5, 5]]) // [1, 0, 1]
nearest([[0, 0]]) // [-1]
nearest([[0, 0], [2, 0], [1, 0]]) // [2, 2, 0]
Как подойти
Подсказки: 2
- Добавьте оси через
None, чтобы получить матрицу n x n. - Исключите саму точку:
np.fill_diagonal(d, np.inf).
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.