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 zerose onesfunzionerebbe 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.