Python (3) 如何计算欧式距离

Python017

Python (3) 如何计算欧式距离,第1张

最直接的方式当然是用numpy.linalg.norm()来计算

参考: https://docs.scipy.org/doc/numpy/reference/generated/numpy.linalg.norm.html

这里想说的是axis参数问题:

axis为0的时候,对于二维矩阵是计算它的列向量的norm;

axis为1的时候,对于二维矩阵是计算它的行向量的norm。

这也很好理解,毕竟列是第一维,而行是第二维,故顺序如此。

另外还有一个ord参数,定义的是计算什么norm,参数列表如下:

欧式距离python实现代码:

import numpy as np

x=np.random.random(10)

y=np.random.random(10)

#方法一:根据公式求解

d1=np.sqrt(np.sum(np.square(x-y)))

#方法二:根据scipy库求解

from scipy.spatial.distance import pdist

X=np.vstack([x,y])

d2=pdist(X)

曼哈顿距离python实现:

import numpy as np

x=np.random.random(10)

y=np.random.random(10)

#方法一:根据公式求解

d1=np.sum(np.abs(x-y))

#方法二:根据scipy库求解

from scipy.spatial.distance import pdist

X=np.vstack([x,y])

d2=pdist(X,'cityblock')

程序运行结果:

扩展资料:

C语言实现:

#include "pch.h"

#define  _CRT_SECURE_NO_WARNINGS

#include<stdio.h>

#include<math.h>

void main()

{

float x1, x2, y1, y2

printf("请输入一组数据:")

while (~scanf("%f%f%f%f", &x1, &y1, &x2, &y2))//开始读取输入的数,知道文件结束。

{

printf("两点间的距离为:%.2f\n", sqrt((x1 - x2)*(x1 - x2) + (y1 - y2)*(y1 - y2)))

printf("请输入一组数据:")

}

}