stackoverflow.com/q/40694380/4950339
нвещания описывает, как 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 вдругой вопрос производительности памяти, показывает, что вещание имеет значение с точки зрения скорости и памяти
Однако я цитирую ту же статью, на которую ссылались выше:
Есть случаи, когда вещание - плохая идея, потому что оно приводит к неэффективному использованию памяти, что замедляет вычисления
Вопрос: когда вещание использует излишне большие объемы памяти и приводит к вялой производительности? Другими словами, когда мы должны использоватьгибридное вещание/ Python алгоритм зацикливания на чистом вещании подход?