Code前端首页关于Code前端联系我们

NumPy 教程:广播(在算术运算期间处理各种形状的数组的能力)

terry 2年前 (2023-09-25) 阅读数 49 #后端开发

广播 是指 NumPy 在算术运算期间处理各种形状的数组的能力。数组的算术运算通常是针对相应的元素进行的。如果两个字段的形状完全相同,则这些操作将顺利执行。

示例 1

import numpy as np 

a = np.array([1,2,3,4]) 
b = np.array([10,20,30,40]) 
c = a * b 
print c

输出如下:

[10   40   90   160]

如果两个数组的维度不相同,则元素之间无法进行操作。然而,由于 NumPy 的广播特性,仍然可以在 NumPy 中使用不同形状的数组。较小的数组 广播 较大数组的大小,以使它们的形状兼容。

如果满足以下规则,则允许广播:

  • ndim较小的数组在前面附加长度维度 1。
  • 输出字段每个维度的大小是输入字段该维度大小的最大值。
  • 如果每个维度的输入大小与输出大小匹配或其值恰好为 1,则将其包含在计算中。
  • 如果输入维度的大小为 1,则该维度中的第一个数据元素将用于该维度中的所有计算。

如果上述规则给出有效结果,并且满足以下条件之一,则该数组被视为广播

  • 田野的形状相同。
  • 数组具有相同的维度数,并且每个维度具有相同的长度,即长度为 1。
  • 数组的维度非常少,并且可以在前面加上长度为 1 的维度以使上述条件成立。

下面的示例显示了一个广播示例。

示例2

import numpy as np 
a = np.array([[0.0,0.0,0.0],[10.0,10.0,10.0],[20.0,20.0,20.0],[30.0,30.0,30.0]]) 
b = np.array([1.0,2.0,3.0])  
print  '第一个数组:'  
print a 
print  '\n'  
print  '第二个数组:'  
print b 
print  '\n'  
print  '第一个数组加第二个数组:'  
print a + b

输出结果如下:

第一个数组:
[[ 0. 0. 0.]
 [ 10. 10. 10.]
 [ 20. 20. 20.]
 [ 30. 30. 30.]]

第二个数组:
[ 1. 2. 3.]

第一个数组加第二个数组:
[[ 1. 2. 3.]
 [ 11. 12. 13.]
 [ 21. 22. 23.]
 [ 31. 32. 33.]]

下图展示了如何广播b字段以兼容

第一个数组:
[[ 0. 0. 0.]
 [ 10. 10. 10.]
 [ 20. 20. 20.]
 [ 30. 30. 30.]]

第二个数组:
[ 1. 2. 3.]

第一个数组加第二个数组:
[[ 1. 2. 3.]
 [ 11. 12. 13.]
 [ 21. 22. 23.]
 [ 31. 32. 33.]]

字段。

NumPy教程:广播(算术运算期间处理不同形状的数组的能力)

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门