zip, not w/ itertools
parent
c811d14ef7
commit
7d8e215c00
14
mymath.py
14
mymath.py
|
@ -6,16 +6,16 @@ import math, random, itertools
|
|||
#generic distance metric stuff
|
||||
|
||||
def manhattan_distance(p1, p2):
|
||||
return sum(abs(x - y) for x, y in itertools.zip(p1, p2))
|
||||
return sum(abs(x - y) for x, y in zip(p1, p2))
|
||||
|
||||
def euclidean_distance(p1, p2):
|
||||
return math.sqrt(sum((x - y) ** 2 for x, y in itertools.zip(p1, p2)))
|
||||
return math.sqrt(sum((x - y) ** 2 for x, y in zip(p1, p2)))
|
||||
|
||||
def squared_euclidean_distance(p1, p2):
|
||||
return sum((x - y) ** 2 for x, y in itertools.zip(p1, p2))
|
||||
return sum((x - y) ** 2 for x, y in zip(p1, p2))
|
||||
|
||||
def chebyshev_distance(p1, p2):
|
||||
return max(abs(x - y) for x, y in itertools.zip(p1, p2))
|
||||
return max(abs(x - y) for x, y in zip(p1, p2))
|
||||
|
||||
def reciprical_distance(p1, p2):
|
||||
d = manhattan_distance(p1, p2)
|
||||
|
@ -37,16 +37,16 @@ def equal(p1, p2):
|
|||
return manhattan_distance(p1, p2) == 0.0
|
||||
|
||||
def add(p1, p2):
|
||||
return tuple(x + y for x, y in itertools.zip(p1, p2))
|
||||
return tuple(x + y for x, y in zip(p1, p2))
|
||||
|
||||
def sub(p1, p2):
|
||||
return tuple(x - y for x, y in itertools.zip(p1, p2))
|
||||
return tuple(x - y for x, y in zip(p1, p2))
|
||||
|
||||
def scale(p, s):
|
||||
return tuple(x * s for x in p)
|
||||
|
||||
def dot(p1, p2):
|
||||
return sum(x * y for x, y in itertools.zip(p1, p2))
|
||||
return sum(x * y for x, y in zip(p1, p2))
|
||||
|
||||
def length(p):
|
||||
return math.sqrt(dot(p, p))
|
||||
|
|
Loading…
Reference in New Issue