Python NumPy 广播(Broadcast)

这篇具有很好参考价值的文章主要介绍了Python NumPy 广播(Broadcast)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

张量(Tensor)、标量(scalar)、向量(vector)、矩阵(matrix)
Python Numpy 切片和索引(高级索引、布尔索引、花式索引)
Python NumPy 广播(Broadcast)

广播(Broadcast)是 numpy 对不同形状(shape)的数组进行数值计算的方式, 对数组的算术运算通常在相应的元素上进行。
如果两个数组 a 和 b 形状相同,即满足 a.shape == b.shape,那么 a*b 的结果就是 a 与 b 数组对应位相乘。这要求维数相同,且各维度的长度相同。

import numpy as np

"""
如果两个数组 a 和 b 形状相同,即满足 a.shape == b.shape,那么 a*b 的结果就是 a 与 b 数组对应位相乘。这要求维数相同,且各维度的长度相同。
"""
a = np.array([1, 2, 3, 4])
b = np.array([10, 20, 30, 40])
c = a * b
print(c)  # [ 10  40  90 160]

"""
当运算中的 2 个数组的形状不同时,numpy 将自动触发广播机制。如:
"""
a = np.array([[0, 0, 0],
              [10, 10, 10],
              [20, 20, 20],
              [30, 30, 30]])
b = np.array([0, 1, 2])
print(a + b)
print('\n')
"""
4x3 的二维数组与长为 3 的一维数组相加,等效于把数组 b 在二维上重复 4 次再运算:
"""
a = np.array([[0, 0, 0],
              [10, 10, 10],
              [20, 20, 20],
              [30, 30, 30]])
b = np.array([0, 1, 2])
bb = np.tile(b, (4, 1))  # 重复 b 的各个维度, 假设reps的维度为d,那么新数组的维度为max(d,A.ndim)
print(bb)
print(a + bb)

Python NumPy 广播(Broadcast)

如果两个 Tensor 的形状的长度不一致,会在较小长度的形状矩阵前部添加 1,直到两个 Tensor 的形状长度相等。
保证两个 Tensor 形状相等之后,每个维度上的结果维度就是当前维度上的较大值。

import numpy as np
 
"""
如果两个 Tensor 的形状的长度不一致,会在较小长度的形状矩阵前部添加 1,直到两个 Tensor 的形状长度相等。
保证两个 Tensor 形状相等之后,每个维度上的结果维度就是当前维度上的较大值。
"""
x = np.ones([2, 1, 4])
y = np.ones((3, 1))
print('x => ', x)
print('y => ', y)
print('x+y => ', x + y)

Python NumPy 广播(Broadcast)

广播的规则:

  • 让所有输入数组都向其中形状最长的数组看齐,形状中不足的部分都通过在前面加 1 补齐。
  • 输出数组的形状是输入数组形状的各个维度上的最大值。
  • 如果输入数组的某个维度和输出数组的对应维度的长度相同或者其长度为 1 时,这个数组能够用来计算,否则出错。
  • 当输入数组的某个维度的长度为 1 时,沿着此维度运算时都用此维度上的第一组值。

简单理解:对两个数组,分别比较他们的每一个维度(若其中一个数组没有当前维度则忽略),满足:文章来源地址https://www.toymoban.com/news/detail-440251.html

  • 数组拥有相同形状。
  • 当前维度的值相等。
  • 当前维度的值有一个是 1

到了这里,关于Python NumPy 广播(Broadcast)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 标量、向量、矩阵、张量之间的区别和联系

    标量 标量(scalar):一个标量就是一个单独的数(整数或实数),不同于线性代数中研究的其他大部分对象(通常是多个数的数组)。标量通常用斜体的小写字母来表示,例如:x mathit xx,标量就相当于Python中定义的 x = 1 向量 向量(vector):一个向量表示一组有序排列的数,通过次序

    2024年02月08日
    浏览(28)
  • 一文读懂标量、向量、矩阵、张量的关系

    参考文章: 跳转 标量只有大小概念,没有方向的概念。通过一个具体的数值就能表达完整。 比如:重量、温度、长度、提及、时间、热量等都数据标量。 百度百科版本: 标量(scalar),亦称“无向量”。有些物理量,只具有数值大小,而没有方向,部分有正负之分。物理

    2023年04月08日
    浏览(34)
  • 深度学习标量、向量、矩阵、张量之间的区别与联系

    前言 深度学习 的表现之所以能够超过传统的机器学习算法离不开神经网络,然而神经网络最基本的数据结构就是 向量 和 矩阵 , 神经网络 的输入是向量,然后通过每个矩阵对向量进行线性变换,再经过激活函数的非线性变换,通过层层计算最终使得 损失函数的最小化 ,完

    2024年02月16日
    浏览(22)
  • Flink 广播-broadcast

    一.Flink 广播-broadcast介绍 在Apache Flink中,\\\"广播\\\"是一种特殊的数据分发模式,用于将数据从一个并行操作传播到整个作业的所有并行任务中。广播操作对于将少量数据有效地分发给并行任务,以便它们能够共享这些数据而不必进行昂贵的网络通信,是非常有用的。它通常用于

    2024年02月15日
    浏览(29)
  • 线性代数的学习和整理3:标量,向量和张量的定义和对比

    目录 1 标量 scalar 2 向量 /矢量 vector 2.1 什么是向量(直观) 2.2 什么是向量(严格定义) 2.3 向量如何表示?在向量空间的表示方法 3 矩阵(matrix) 3.1 矩阵的定义 3.2 矩阵和向量的关系 3.3  方阵 4 ​张量(tensor):向量,矩阵都可以看成张量 4.1 张量的定义 4.2 更多维度的张量,举

    2024年02月04日
    浏览(46)
  • 【Python Numpy】广播、数组的迭代

    在Python的科学计算领域,NumPy是一个强大的工具,它提供了用于操作多维数组的功能。广播(Broadcasting)是NumPy中的一个重要概念,它使得不同形状的数组之间的计算变得非常灵活和便捷。本文将介绍广播是什么,以及如何在NumPy中使用广播来进行数组计算。 在Python的科学计算

    2024年02月06日
    浏览(49)
  • Android 广播使用详解(Broadcast Receivers)

    广播接收器用于响应来自其他应用程序或者系统的广播消息。这些消息有时被称为事件或者意图。例如,应用程序可以初始化广播来让其他的应用程序知道一些数据已经被下载到设备,并可以为他们所用。这样广播接收器可以定义适当的动作来拦截这些通信。 有以下两个重要

    2024年02月05日
    浏览(30)
  • Flink多流处理之Broadcast(广播变量)

    写过Spark批处理的应该都知道,有一个广播变量 broadcast 这样的一个算子,可以优化我们计算的过程,有效的提高效率;同样在Flink中也有 broadcast ,简单来说和Spark中的类似,但是有所区别,首先Spark中的 broadcast 是静态的数据,而Flink中的 broadcast 是动态的,也就是源源不断的数据流.在Fl

    2024年02月13日
    浏览(36)
  • 墨西哥小区广播CELL BROADCAST MEXICO 2023

    CB MEXICO 2023 GC Emergency broadcast is requested by Movistar MEXICO in a regulated standard named CBMexico. The implementation of this standar is MANDATORY to get approval. RULE 1: The title of the message must change depending on the channel. (check complete table) Function Primary channels: Title of the messages. Can be turned OFF Level 1 4370, 4383 Mens

    2023年04月21日
    浏览(25)
  • 【深度学习】 Python 和 NumPy 系列教程(十二):NumPy详解:4、数组广播;5、排序操作

    目录 一、前言 二、实验环境 三、NumPy 0、多维数组对象(ndarray) 多维数组的属性 1、创建数组 2、数组操作 3、数组数学 4、数组广播 5、排序操作 1. np.sort() 函数 2. np.argsort() 函数 3. ndarray.sort() 方法 4. 按列或行排序 5. np.lexsort() 函数 6. np.partition() 函数 7. np.argpartition() 函

    2024年02月08日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包