在 Python 中使用 NumPy 数组进行广播

pythonserver side programmingprogramming

我们知道,如果数组大小相等且满足特定要求,则不同数组之间的算术运算每月都会发生一次。但在某些情况下,我们可以接受大小不等的数组,并通过用较小的 ndim 填充数组并在其形状中前置"1"来增强其中一个数组,从而对它们应用算术运算。因此,基本上,广播和数组意味着将其形状更改为任何所需的形状。

数组广播规则

  • ndim 小于另一个的数组在前面附加"1"在其形状中。

  • 输出形状的每个维度的大小是该维度中输入大小的最大值。

  • 如果输入在特定维度上的大小与输出大小匹配或其值恰好为 1,则可以在计算中使用输入。

  • 如果输入的维度大小为 1,则该维度中的第一个数据条目将用于该维度上的所有计算。

示例

以下示例展示了使用 numpy 数组进行数组操作期间广播是如何发生的。

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 'First array:'
print a
print '\n'

print 'Second array:'
print b
print '\n'

print 'First Array + Second Array'
print a + b

输出

运行上述代码得到以下结果 −

First array:
[
   [ 0. 0. 0.]
   [ 10. 10. 10.]
   [ 20. 20. 20.]
   [ 30. 30. 30.]
]

Second array:
[ 1. 2. 3.]

First Array + Second Array
[
   [ 1. 2. 3.]
   [ 11. 12. 13.]
   [ 21. 22. 23.]
   [ 31. 32. 33.]
]

相关文章