numpy中的广播机制
时间: 2023-12-14 10:33:43 浏览: 68
Numpy数组的广播机制的实现
5星 · 资源好评率100%
NumPy中的广播是指不同形状的数组之间的算术运算的执行方式。当执行这些操作时,NumPy会尝试将它们转换为相同的形状,以便进行操作。如果两个数组的维度不同,则元素到元素的操作是不可能的。但是,在NumPy中仍然可以对它们进行操作,这就是广播的概念。
以下是两个广播机制的例子:
1. 稍微复杂的广播机制
```python
import numpy as np
a = np.array([[0, 0, 0], [10, 10, 10], [20, 20, 20], [30, 30, 30]])
b = np.array([1, 2, 3])
print(a+b) # 输出:array([[ 1, 2, 3], [11, 12, 13], [21, 22, 23], [31, 32, 33]])
```
在这个例子中,数组a的形状为(4,3),数组b的形状为(3,)。当执行a+b时,NumPy会将数组b的形状转换为(1,3),然后将其沿着第一维复制4次,以匹配数组a的形状。最后,NumPy执行元素到元素的操作,得到形状为(4,3)的结果数组。
2. 最简单的广播机制
```python
import numpy as np
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
print(a*b) # 输出:array([ 4, 10, 18])
```
在这个例子中,数组a和数组b的形状都为(3,)。当执行a*b时,NumPy会直接执行元素到元素的操作,得到形状为(3,)的结果数组。
阅读全文