import numpy as np
import pandas as pd
[docs]
def mahalanobis_distance(
data: np.ndarray | pd.DataFrame, location: np.ndarray, covariance: np.ndarray
):
"""
Calculate the Mahalanobis distance for multiple data vectors.
Parameters:
data (np.ndarray or pd.DataFrame): An array-like object where each row is a data vector.
location (np.ndarray): The center of the data.
covariance (np.ndarray): The scatter estimator of the data.
Returns:
np.ndarray: An array of Mahalanobis distances for each data vector.
"""
if isinstance(data, pd.DataFrame):
data = data.values
cov_inv = np.linalg.inv(covariance)
centered_data = data - location.flatten()
return np.sqrt(np.sum(centered_data.dot(cov_inv) * centered_data, axis=1))