当前位置: 首页 > news >正文

网站空间数据库地宝网招聘信息网

网站空间数据库,地宝网招聘信息网,做本地网站能做吗,淘宝搜索指数numpy学习笔记11:计算两个数组的欧氏距离 欧氏距离是指在多维空间中两点之间的直线距离,计算公式是各分量差的平方和的平方根。也就是说,如果有两个点P和Q,坐标分别是(p1, p2, ..., pn)和(q1, q2, ..., qn),那么它们之…

numpy学习笔记11:计算两个数组的欧氏距离

欧氏距离是指在多维空间中两点之间的直线距离,计算公式是各分量差的平方和的平方根。也就是说,如果有两个点P和Q,坐标分别是(p1, p2, ..., pn)和(q1, q2, ..., qn),那么它们之间的欧氏距离d就是√[(p1-q1)² + (p2-q2)² + ... + (pn-qn)²]。

计算两个数组的欧氏距离的普通办法:

def distance_no_numpy(arr1, arr2):if len(arr1) != len(arr2):raise ValueError("两个数组的长度必须相同")squared_sum = 0for i in range(len(arr1)):squared_sum += (arr1[i] - arr2[i]) ** 2return squared_sum ** 0.5
# 示例数组
arr1 = [1, 2, 3]
arr2 = [5, 4, 3]# 计算欧氏距离
distance = distance_no_numpy(arr1, arr2)
print(f"不使用 NumPy 计算的欧氏距离: {distance}")

使用numpy计算两个数组的欧氏距离可以通过以下步骤实现

计算两个数组之间的欧氏距离的步骤是:

1. 计算两个数组的差值:diff = a - b

2. 对差值进行平方:squared_diff = np.square(diff)

3. 求和:sum_squared_diff = np.sum(squared_diff)

4. 取平方根:euclidean_distance = np.sqrt(sum_squared_diff)

计算两个数组的欧氏距离可以通过以下步骤实现,使用NumPy的高效向量化操作:


方法1:分步计算

  1. 计算差值:对应元素相减。

  2. 平方差值:逐元素平方。

  3. 求和:所有平方差值相加。

  4. 开平方:取总和的平方根。

import numpy as np# 示例数组
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])# 分步计算
diff = a - b          # 差值: [-3, -3, -3]
squared_diff = diff ** 2  # 平方: [9, 9, 9]
sum_diff = np.sum(squared_diff)  # 求和: 27
euclidean_distance = np.sqrt(sum_diff)  # 平方根: 5.196print("欧氏距离:", euclidean_distance)

方法2:使用 np.linalg.norm

直接计算两个数组差的 L2范数(即欧氏距离):

import numpy as npa = np.array([1, 2, 3])
b = np.array([4, 5, 6])distance = np.linalg.norm(a - b)
print("欧氏距离:", distance)  # 输出: 5.196

扩展场景

1. 多维数组计算

若输入为二维数组(如矩阵行向量),需展平为一维或按行处理:

a = np.array([[1, 2], [3, 4]])  # 形状 (2,2)
b = np.array([[5, 6], [7, 8]])# 展平后计算整体距离
distance = np.linalg.norm(a.flatten() - b.flatten())# 或逐行计算距离(每对行的距离)
row_distances = np.linalg.norm(a - b, axis=1)
2. 批量计算(矩阵间所有行组合)

使用广播计算两个矩阵各行之间的欧氏距离:

X = np.array([[1, 2], [3, 4]])  # 形状 (2,2)
Y = np.array([[5, 6], [7, 8]])  # 形状 (2,2)# 计算每对行的距离
distances = np.sqrt(np.sum((X[:, np.newaxis] - Y) ** 2, axis=2))

关键点总结

  • 公式:d=∑i=1n(ai−bi)2d=∑i=1n​(ai​−bi​)2​。

  • 效率:向量化操作(如 np.linalg.norm)比显式循环快数百倍。

  • 灵活性:适用于任意维度的数组(需形状一致或可广播)。

通过以上方法,可以高效计算任意形状数组的欧氏距离。

http://www.dtcms.com/a/433425.html

相关文章:

  • layui响应式网站开发教程wordpress主题模板视频网站
  • 赣州那里有做网站的公司手机app制作多少钱
  • 什么是网站实施网站开发常用jquery插件
  • 建设网站服务器选择wordpress登录去不了后台
  • 自然人做音频网站违法吗越秀金融大厦地址
  • 简洁的公司网站wordpress 分类名
  • 设计有哪些网站一级a做爰片i免费网站
  • 网站开发实训报告总结吉安永新哪里做网站
  • 昆明做网站的wordpress 论坛 小程序
  • 网站开发需求模板列表网网站建设
  • 交互设计好的网站人力资源培训机构
  • 做网站写页面多少钱海外浏览器
  • 网站渠道建设比较火的推广软件
  • 在线设计外卖平台店招石家庄seo网站优化电话
  • 网站结构 网站内容建设杭州租车网站建设
  • wordpress 大型网站一米八效果图网站
  • 手机网站制作费网页设计的基本原则是什么
  • 个人微网站怎么做网络服务是什么
  • 网站建设需求登记表 免费下载wordpress动态标签
  • 文化建设 设计公司网站做相册哪个网站好用吗
  • 怎样建网站 阿里云如何检测网站是否安全
  • 凯里网络公司建设网站一般通过什么查看天气预报
  • 优惠券网站怎么搭建做移动网站优化优
  • 做网站该去哪找客户高级网站开发
  • 学生网站建设可行性分析用php做的网站软件
  • 北京seo课程温州优化推广
  • 用什么做网站开发聊城网站设计公司
  • 精准扶贫网站建设的意义丫丫影院
  • 弄个网站需要多少钱自己有了域名 怎么做网站
  • 个人博客网站logo极速网站开发