术语broadcasting描述了numpy在算术运算期间如何处理具有不同形状的数组。在
Example 1:
from numpy import array
a = array([1.0,2.0,3.0])
b = array([2.0,2.0,2.0]) # multiply element-by-element ()
a * b
>> array([ 2., 4., 6.])
Example 2 :
from numpy import array
a = array([1.0,2.0,3.0])
b = 2.0 # broadcast b to all a
a * b
>>array([ 2., 4., 6.])
我们可以将标量b在算术运算期间拉伸成与a形状相同的数组。Numpy足够聪明,可以使用原始标量值而不必实际复制,这样广播操作就尽可能地具有内存和计算效率(b是标量,而不是数组)
由@Eric Duminil在another memory performance question中制作的一个小的benchmarking,表明广播在速度和内存方面有不同
不过,我引用了上面链接的同一篇文章:
There are, cases where broadcasting is a bad idea because it leads to inefficient use of memory that slows computation
问题是:当广播使用不必要的大量内存而导致性能低下时? 换言之,当我们应该在纯广播方法上使用混合广播/python循环算法时?在
目前没有回答
相关问题 更多 >
编程相关推荐