三维坐标计算马氏距离(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一致,包的三个输入说明如下:
在这里插入图片描述
mahalanobis包官方说明

参考链接

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值