python中的广播机制
时间: 2023-10-23 09:02:27 浏览: 135
一文搞定 python 的广播机制与 np.newaxis
在Python中,广播机制是指针对两个不同形状的数组进行对应项的加、减、乘、除运算时,首先将数组调整为统一的形状,然后再进行运算。这种机制在Numpy、TensorFlow和PyTorch等库中都有应用。\[1\]
举个例子来阐述Python的广播机制。如果有一个形状为(3,4,5)的三维数组A和一个形状为(4,5)的二维数组B,由于A和B的后缘维度都为(4,5),所以可以进行广播机制。同理,如果A为(3,4)的二维数组,B为(4,)的一维数组,它们的后缘维度都是4,所以也可以进行广播。另外,如果A为(4,5)的三维数组,B为(4,1)的二维数组,两者维度相同,但其中一个维度的其中一方为1,也可以进行广播。\[2\]
下面是一个验证广播机制的小程序:
```python
import numpy as np
a = np.array(\[\[1,2,3\],\[4,5,6\]\]) # 2*3
b = np.array(\[\[1\],\[3\]\]) # 2*1
c = a + b
print(c)
a = np.array(\[\[\[1,2\],\[2,3\],\[3,4\]\],\[\[2,3\],\[4,5\],\[7,8\]\]\]) # 2*3*2
b = np.array(\[\[6,6\],\[7,7\],\[8,8\]\]) # 3*2
c = a + b
print(c)
print(c.shape)
```
参考链接:\[https://www.cnblogs.com/jiaxin359/p/9021726.html\](https://www.cnblogs.com/jiaxin359/p/9021726.html) \[2\]
需要注意的是,当两个数组的形状无法满足广播机制的条件时,会抛出ValueError异常。例如,如果数组a的形状为(3,3),数组b的形状为(2,3),那么它们无法进行广播运算,会抛出异常。\[3\]
#### 引用[.reference_title]
- *1* *3* [【Python学习记录】Numpy广播机制(broadcast)](https://blog.csdn.net/xxm524/article/details/128210631)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item]
- *2* [python的广播机制(broadcasting)](https://blog.csdn.net/weixin_44319196/article/details/107871808)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
阅读全文