np.linalg.norm и как бороться с машиной эпсилон - PullRequest
0 голосов
/ 26 октября 2019

У меня есть довольно простая проблема. Я хочу вычислить евклидово расстояние с помощью numpy с помощью этого кода:

a= np.array([1,2,3])
b= np.array([2,3,4])

print((np.linalg.norm(a-b))**2)

Это дает 2.9999999999999996, однако ответ должен быть 3. Как мне этого добиться?

Спасибо

Ответы [ 2 ]

1 голос
/ 26 октября 2019

Как правило, вы можете использовать np.isclose для сравнения значений с плавающей запятой.

0 голосов
/ 26 октября 2019

Вы можете использовать функцию round ()

a= np.array([1,2,3])
b= np.array([2,3,4])

print((np.linalg.norm(round(a-b))**2))
...