import numpy as np
from scipy.spatial import distance
import math

######################## pure python #################
point1=[1,2,3]
point2=[4,5,6]
x=0
for i in range (0,len(point1)):
    x=x+(point1[i]-point2[i])**2
euclidean_dist=x**0.5
print("Euclidean distance using pure python: ",euclidean_dist)
print ("")
######################## Numpy ######################
##################### using numpy.linalg.norm() ############################
a = np.array((1, 2, 3))
b = np.array((4, 5, 6))

dist = np.linalg.norm(a-b)

print("Euclidean distance using numpy.linalg.norm(): ",dist)
print ("")
############################# using np.sqrt and np.sum ######################

dist = np.sqrt(np.sum(np.square(a-b)))

print("Euclidean distance using np.sqrt() and np.sum(): ",dist)
print ("")

####################### Scipy ############################
################### using scipy.spatial #######################
a = (1, 2, 3)
b = (4, 5, 6)

dist_scipy_spatial=distance.euclidean(a, b)
print("Euclidian distance using scipy.spatial()",dist_scipy_spatial)
print ("")
######################### Math ##############################
########################## using math.dist() #################################

a = (1, 2, 3)
b = (4, 5, 6)

math_dist=math.dist(a,b)
print("Euclidian distance using math.dist()",math_dist)
print ("")