¿Cuándo transmitir es una mala idea? (numpy)

El terminoradiodifusión describe cómo numpy trata las matrices con diferentes formas durante las operaciones aritméticas.

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.])

Podemos pensar que el escalar b se estira durante la operación aritmética en una matriz con la misma forma que a. Numpy es lo suficientemente inteligente como para usar el valor escalar original sin hacer copias para que las operaciones de transmisión sean lo más eficientes posible desde el punto de vista de la computación (b es un escalar, no una matriz)

Un pequeñoevaluación comparativa hecho por@Eric Duminil enotra pregunta sobre el rendimiento de la memoria, muestra que la transmisión marca la diferencia en términos de velocidad y memoria

Sin embargo, estoy citando el mismo artículo vinculado anteriormente:

Hay casos en los que la transmisión es una mala idea porque conduce a un uso ineficiente de la memoria que ralentiza el cálculo

La pregunta es: ¿Cuándo la transmisión utiliza cantidades innecesariamente grandes de memoria y produce un rendimiento lento? En otros términos, cuando debemos usarradiodifusión híbrida/ algoritmo de bucle de python sobre el enfoque de transmisión pura?

Respuestas a la pregunta(0)

Su respuesta a la pregunta