三维坐标计算马氏距离(Python)

前言

搜索这个标题时看到好多都是用二维数据算马氏距离,找了半天看到几个三维的,但语言是matlab,所以就写个python的记录一下。本文适用于知道这是个距离,不想了解公式,copy直接能用的情况。

代码

from scipy.spatial.distance import mahalanobis
import numpy as np

a = np.array([10,15,29])
b = np.array([15,46,13])
c = np.array([23,21,30])
d = np.array([11,9,35])

x = np.array([a,b,c,d]).T
# 算b与d马氏距离
cov = np.cov(x)
inv = np.linalg.inv(cov)

# 一步一步算
res = (np.matmul(np.matmul((b-d) , inv),(b-d).T)) ** 0.5
print('res =', res)

# 调包计算
dis = mahalanobis(b, d, cov)
print('dis =', dis)

两种方法算出的res与dis一致,包的三个输入说明如下:
三维坐标计算马氏距离(Python)_第1张图片
mahalanobis包官方说明

参考链接

1.有三维数据案例+手动推导过程+matlab验算
2.有matlab版的马氏距离+剔除异常数据

你可能感兴趣的:(数据处理,python,numpy,马氏距离,三维坐标)