Quando transmitir é uma má ideia? (entorpecido)

O termoradiodifusão descreve como numpy trata matrizes com formas diferentes durante operações 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 no b escalar sendo esticado durante a operação aritmética em uma matriz com a mesma forma que a. O Numpy é inteligente o suficiente para usar o valor escalar original sem realmente fazer cópias, para que as operações de transmissão sejam tão eficientes quanto possível em termos de memória e computação (b é um escalar, não uma matriz)

Um pequenoavaliação comparativa feito por@Eric Duminil nooutra questão de desempenho de memória, mostra que a transmissão faz diferença em termos de velocidade e memória

No entanto, estou citando o mesmo artigo vinculado acima:

Existem casos em que a transmissão é uma má ideia, porque leva ao uso ineficiente da memória que atrasa a computação

A pergunta é: quando a transmissão usa quantidades desnecessariamente grandes de memória e resulta em desempenho lento? Em outros termos, quando devemos usartransmissão híbrida/ looping python sobre o método de transmissão pura?

questionAnswers(0)

yourAnswerToTheQuestion