参考: 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("请输入一组数据:")
}
}