# Source code for etna.clustering.distances.euclidean_distance

```from typing import TYPE_CHECKING

import numba
import numpy as np
import pandas as pd

from etna.clustering.distances.base import Distance

if TYPE_CHECKING:
from etna.datasets import TSDataset

@numba.cfunc(numba.float64(numba.float64[:], numba.float64[:]))
def euclidean_distance(x1: np.ndarray, x2: np.ndarray) -> np.floating:
"""Get euclidean distance between two arrays.

Parameters
----------
x1:
first array
x2:
second array

Returns
-------
:
distance between x1 and x2
"""
return np.linalg.norm(x1 - x2)

[docs]class EuclideanDistance(Distance):
"""Euclidean distance handler."""

def __init__(self, trim_series: bool = True):
"""Init EuclideanDistance.

Parameters
----------
trim_series:
if True, compare parts of series with common timestamp
"""
super().__init__(trim_series=trim_series)

def _compute_distance(self, x1: np.ndarray, x2: np.ndarray) -> float:
"""Compute distance between x1 and x2."""
return euclidean_distance(x1=x1, x2=x2)

def _get_average(self, ts: "TSDataset") -> pd.DataFrame:
"""Get series that minimizes squared distance to given ones according to the euclidean distance.

Parameters
----------
ts:
TSDataset with series to be averaged

Returns
-------
pd.DataFrame:
dataframe with columns "timestamp" and "target" that contains the series
"""
centroid = pd.DataFrame({"timestamp": ts.index.values, "target": ts.df.mean(axis=1).values})
return centroid

__all__ = ["EuclideanDistance", "euclidean_distance"]
```