Sto cercando di rendere più efficiente una parte di codice utilizzando il modulo vettoriale in numpy. Lascia che ti mostri un esempio in modo da sapere cosa intendo.Tentativo di vectorizzare il calcolo iterativo con numpy
Dato il codice seguente:
a = np.zeros([4,4])
a[0] = [1., 2., 3., 4.]
for i in range(len(a)-1):
a[i+1] = 2*a[i]
print a
Produce
[[ 1. 2. 3. 4.]
[ 2. 4. 6. 8.]
[ 4. 8. 12. 16.]
[ 8. 16. 24. 32.]]
Quando ora provo vectorize il codice come questo:
a = np.zeros([4,4])
a[0] = [1., 2., 3., 4.]
a[1:] = 2*a[0:-1]
print a
ottengo solo la prima iterazione corretta :
[[ 1. 2. 3. 4.]
[ 2. 4. 6. 8.]
[ 0. 0. 0. 0.]
[ 0. 0. 0. 0.]]
E 'possibile scrivere il codice sopra in modo efficiente in una forma vettoriale (dove l'iterazione successiva accede sempre alla precedente iterazione) o devo mantenere il ciclo for
?