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

.网站排版seo外链优化培训

.网站排版,seo外链优化培训,站外推广策划书,免费做英语卷子的网站numpy学习笔记9:numpy的广播机制详细解释 NumPy 的 广播机制(Broadcasting) 是处理不同形状数组进行逐元素运算的核心规则。它允许在不显式复制数据的情况下,让不同形状的数组进行数学运算,大幅简化代码并提升性能。以…

numpy学习笔记9:numpy的广播机制详细解释

NumPy 的 广播机制(Broadcasting) 是处理不同形状数组进行逐元素运算的核心规则。它允许在不显式复制数据的情况下,让不同形状的数组进行数学运算,大幅简化代码并提升性能。以下是广播机制的详细解释:


1. 广播的核心规则

广播遵循 从右向左(从最低维度开始)逐维度匹配 的原则:

  1. 维度对齐:将数组的维度从右向左对齐。

  2. 维度兼容性判断

    • 两个数组在某一维度上相等,

    • 其中一个数组在该维度的大小为 1

  3. 扩展缺失维度:在维度不足的数组左侧补 1,直到维度数相同。

  4. 扩展大小为1的维度:将维度大小为 1 的数组沿该维度复制到与另一数组相同的大小。

若以上条件不满足,则触发 ValueError,表示无法广播。


2. 广播示例

示例1:标量与数组的运算
import numpy as npa = np.array([1, 2, 3])  # 形状 (3,)
b = 5                     # 标量(视为形状 ())# 广播后:b 扩展为形状 (3,)
result = a + b            # [1+5, 2+5, 3+5] → [6,7,8]
示例2:一维数组与二维数组相加
a = np.array([[1], [2], [3]])  # 形状 (3,1)
b = np.array([10, 20, 30])     # 形状 (3,)# 步骤:
# 1. 对齐维度:a(3,1) vs b(3,) → 扩展 b 为 (1,3)
# 2. 扩展维度:a(3,1) 和 b(1,3)
# 3. 复制数据:
#    a → [[1,1,1], [2,2,2], [3,3,3]]
#    b → [[10,20,30], [10,20,30], [10,20,30]]
result = a + b  # 形状 (3,3)

输出:

[[11 21 31][12 22 32][13 23 33]]
示例3:三维数组的广播
a = np.ones((2, 1, 3))  # 形状 (2,1,3)
b = np.ones((4, 3))     # 形状 (4,3)# 步骤:
# 1. 对齐维度:a(2,1,3) vs b(  4,3) → 补全 b 为 (1,4,3)
# 2. 扩展维度:
#    a → (2,4,3)(沿第1维复制4次)
#    b → (2,4,3)(沿第0维复制2次)
result = a + b  # 形状 (2,4,3)

3. 广播的数学本质

广播的底层逻辑是 虚拟扩展数组,而非实际复制数据,因此内存高效。例如:

a = np.ones((3, 1))  # 形状 (3,1)
b = np.ones((1, 4))  # 形状 (1,4)# 广播后:
# a → (3,4)(每行重复4次)
# b → (3,4)(每列重复3次)
result = a + b  # 形状 (3,4)

4. 广播规则的应用场景

(1) 归一化数据
data = np.random.rand(100, 3)  # 100个样本,3个特征
mean = data.mean(axis=0)       # 形状 (3,)
std = data.std(axis=0)         # 形状 (3,)
normalized = (data - mean) / std  # 广播:mean/std 扩展为 (100,3)
(2) 图像处理
image = np.random.rand(256, 256, 3)  # 彩色图像(高度, 宽度, 通道)
brightness = np.array([0.1, 0.2, 0.05])  # 各通道亮度调整
brightened = image + brightness  # 广播至 (256,256,3)
(3) 外积计算
a = np.array([1, 2, 3])  # 形状 (3,)
b = np.array([4, 5])      # 形状 (2,)
outer = a[:, None] * b    # 广播为 (3,1) * (2,) → (3,2)

结果:

[[4, 5],[8,10],[12,15]]

5. 广播的限制与错误

不兼容示例
a = np.ones((3, 4))
b = np.ones((2, 5))  # 形状 (2,5)try:a + b
except ValueError as e:print(e)  # 报错:operands could not be broadcast together with shapes (3,4) (2,5)
调试技巧
  • 检查数组形状:a.shape 和 b.shape

  • 手动扩展维度:用 reshape 或 np.newaxis 调整形状:

    a = np.array([1, 2, 3])  # 形状 (3,)
    b = np.array([[4], [5]]) # 形状 (2,1)
    result = a + b  # 广播为 (2,3)

6. 广播的性能优化

  • 内存效率:广播通过虚拟扩展避免实际复制数据,适合处理大规模数组。

  • 向量化操作:结合广播的运算可完全避免 Python 循环。


总结

  • 核心规则:形状从右向左对齐,维度大小为1或相等。

  • 应用场景:标准化、外积、图像处理等。

  • 优势:代码简洁、内存高效、运算快速。

通过广播机制,NumPy 能够优雅地处理不同形状数组的运算,是科学计算中不可或缺的特性!

http://www.dtcms.com/wzjs/264824.html

相关文章:

  • 网站产品页如何做优化百度网址大全首页
  • 新月传媒做网站 怎么样营销网络推广方式有哪些
  • dns网站卫士 收录加强服务保障 满足群众急需需求
  • 好知网做网站搜索引擎优化方案
  • 怎样建设个人游戏网站社群营销怎么做
  • 西宁做网站的公司cpa游戏推广联盟
  • 湖南对外建设集团网站网络营销策略论文
  • 做会员体系的网站小网站搜什么关键词好
  • 政府网站 内容建设标准百度一下百度网站
  • 计算机网站开发图片最近实时热点新闻事件
  • 平台网站兼职做sap学历提升哪个教育机构好一些
  • seo管理系统创作东莞关键词排名快速优化
  • 网站建设需要提供什么小程序开发流程详细
  • 单位网站建设与管理产品运营推广方案
  • 自家宽带怎么建设网站重庆seo教程博客
  • 提取卡密网站怎么做关键词推广优化
  • 做外汇网站代理商青岛百度网站排名
  • 天眼查企业查询在线官网经典seo伪原创
  • dw怎么用div css做网站社会化媒体营销
  • 台州本地做网站的求好用的seo软件
  • 温江网站建设seo会被取代吗
  • 太子河网站建设营业推广的方式有哪些
  • 和小孩做的网站seow
  • 福建建设执业资格网站报名系统百度平台商家订单查询
  • 如东网站建设今天上海最新新闻事件
  • 做网站的实验报告如何做好宣传推广
  • 网上开店准备工作seo优化博客
  • 轻设计 让网站灵敏轻便的6个技巧江门搜狗网站推广优化
  • 织梦cms sql注入破解网站后台管理员账号密码企业营销
  • 空间域名一年要多少钱乐陵市seo关键词优化