corentin.bollet
7 months ago
3 changed files with 4438 additions and 0 deletions
File diff suppressed because it is too large
@ -0,0 +1,32 @@ |
|||
from datetime import date |
|||
|
|||
def ecartDate(date1, date2): |
|||
"""Renvoie le nombre de jours écoulés |
|||
entre date1 et date2 (modulo 365)""" |
|||
delta_sec = (date.fromisoformat(date2)-date.fromisoformat(date1)).total_seconds() |
|||
secParJour = 86400 |
|||
return delta_sec / secParJour |
|||
|
|||
def distance(point1, point2): |
|||
"""Prend en paramètre 2 tuples au format |
|||
(Date du jour, Température moyenne, température de référence) |
|||
et qui renvoie un nombre réel représentant |
|||
la distance euclidienne au carré entre ces deux points""" |
|||
duree = ecartDate(point1[0], point2[0]) |
|||
delta_T_moy = (point1[1]-point2[1])**2 |
|||
delta_T_ref = (point1[2]-point2[2])**2 |
|||
|
|||
return duree**2/100 + delta_T_moy**2 + delta_T_ref**2 |
|||
|
|||
|
|||
def kPlusProches(point_a_verifier, tableau, k): |
|||
"""Prend en paramètres un tuple au format |
|||
(Date du jour, Température moyenne, température de référence) |
|||
et un tableau au format (Numéro du jour, Température moyenne, Température de référence). |
|||
Renvoie un tableau trié avec les k plus proches |
|||
points de `point_a_verifier`, au format (distance, indice du tableau original)""" |
|||
dist = [] |
|||
for i, point in enumerate(tableau): |
|||
dist.append(distance(point_a_verifier, point), i) |
|||
sorted(dist, key=lambda t: t[0]) |
|||
return dist[:k+1] |
Loading…
Reference in new issue