NumPy Broadcast广播

NumPy Broadcast广播

NumPy Broadcast广播

  NumPy Broadcast广播是指NumPy在算术运算期间处理不同形状的数组的能力。数组上的算术运算通常在相应的元素上完成。如果两个数组的形状完全相同,那么这些操作就可以顺利执行。numpy在算术运算期间如何处理具有不同维度的数组,这会导致某些约束,较小的数组在较大的数组中广播,以便它们具有兼容的形状。

NumPy Broadcast广播
NumPy Broadcast广播

  广播提供了一种向量化数组操作的方法,以便循环发生在C中而不是Python中,因为我们知道Numpy是在C中实现的。它这样做不会产生不必要的数据副本,从而导致高效的算法实现。在某些情况下,广播会导致内存使用效率低下,从而减慢计算速度。

  推荐:NumPy数据类型

数组维度相同

数组维度相同
NumPy Broadcast广播
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]

  推荐:如何在Python中创建表格

数组维度不相同

  如果两个数组的维度不同,则元素到元素的操作是不可能的。然而,由于广播能力,在NumPy中仍然可以对形状不相似的数组进行操作。较小的数组被广播到较大数组的大小,以便它们具有兼容的形状。

数组维度不相同
NumPy Broadcast广播

  如果满足以下规则,则可以广播-

  • ndim小于另一个的数组在其形状中以“1”开头。
  • 输出形状的每个维度中的大小是该维度中输入大小的最大值。
  • 如果输入在特定维度中的大小与输出大小匹配或其值恰好为1,则可以在计算中使用输入。
  • 如果输入的维度大小为1,则该维度中的第一个数据条目将用于沿该维度的所有计算。

  推荐:NumPy数组属性

  如果上述规则产生有效结果并且以下其中一项为,则称一组数组是可广播的-

  • 数组具有完全相同的形状。
  • 数组具有相同的维数,并且每个维的长度是公共长度或1。
  • 维度太少的数组可以在其形状前面加上长度为1的维度,因此上述属性是正确的。
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.]]

  下图演示了广播数组b以与a兼容。

广播数组b与a兼容
NumPy Broadcast广播

总结

  以上是晓得博客为你介绍的NumPy Broadcast 广播的全部内容,希望对你的Python编程学习有所帮助,如有问题,欢迎留言探讨。

  推荐:NumPy教程

给文章评分

晓得博客,版权所有丨如未注明,均为原创
晓得博客 » NumPy Broadcast广播

转载请保留链接:https://www.pythonthree.com/numpy-broadcast/

Claude、Netflix、Midjourney、ChatGPT Plus、PS、Disney、Youtube、Office 365、多邻国Plus账号购买,ChatGPT API购买,优惠码XDBK,用户购买的时候输入优惠码可以打95折

Chatgpt-Plus注册购买共享账号
滚动至顶部