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

恩施建站建设安徽网站开发推荐

恩施建站建设,安徽网站开发推荐,软件开发外包公司好不好,商务定制网站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/wzjs/813252.html

相关文章:

  • 朋友让你做网站如何拒绝雪樱wordpress主题
  • 嘉兴网站建设企业网站制作秦皇岛有能做网页的地方吗
  • 云服务器做网站详细小程序推广任务
  • 做网站 所需资源威联通 wordpress
  • 长治网站制作东营会计信息网官网
  • 哪个网站做物业贷网站建设多钱
  • wordpress建网站详细教程对网站的建议
  • 开发移动网站家装设计软件app免费
  • 网站建设商务代表工作总结沈阳妇幼保健院人流价格表
  • 微网站建设比较全面的是网站备案的要求是什么样的
  • 练手网站开发无忧网
  • 贸易公司做网站怎么样素材下载免费
  • 网站建设代理公司做公司标志用哪个网站
  • 贵阳网站设计做资源网站需要什么
  • 接做网站的郴州市网站建设公司
  • 做网站需要注意哪些东西设计素材网站排行榜
  • 如何把刚做的网站被百度抓取到上海专业网站设计制作
  • 网站备案号 如何添加WordPress页面模板怎么选
  • 做网站后台指的那现在较为常用的网站开发技术
  • 有没有做淘宝客网站的无锡网站建设君通科技公司
  • 数据百度做网站好用吗wordpress的插件下载
  • 网站开发公司杭州网站建设怎样做电商卖货
  • 保定哪家做网站专业怎么样购买服务器建设网站
  • 网站建设设计风格描述登录网站定制
  • 自己做网站要学什么关键词挖掘工具免费
  • 乐清市做淘宝网站公司网站建设第一步怎么弄
  • 大兴做网站企业网站 管理
  • 网站开发实例模板代码错误网站
  • 哪些网站的做的好看wordpress5.0编辑器
  • 那里有专门做印刷品的网站做网站公司东莞