Ho bisogno di creare un array NumPy di lunghezza n
, ciascuno dei quali è v
.
C'è qualcosa di meglio di:
a = empty(n)
for i in range(n):
a[i] = v
Lo so zeros
e ones
funzionerebbe per v = 0, 1. Potrei usare v * ones(n)
, ma non funzionerà quando sarebbe v
è None
, eanche molto più lento.
v * ones(n)
è ancora orribile, in quanto utilizza la costosa moltiplicazione. Sostituisci *
con +
però e v + zeros(n)
in alcuni casi risulta sorprendentemente buono ( stackoverflow.com/questions/5891410/… ).
var = np.empty(n)
e quindi riempirlo con 'var [:] = v'. (a proposito, np.full()
è veloce come questo)
a = np.zeros(n)
nel ciclo è più veloce dia.fill(0)
. Questo è in contrasto con quello che mi aspettavo da quando pensavo chea=np.zeros(n)
avrei dovuto allocare e inizializzare la nuova memoria. Se qualcuno può spiegarlo, lo apprezzerei.