Sto creando un array numpy
di valori casuali e li aggiungo a un array esistente contenente float a 32 bit. Mi piacerebbe generare i valori casuali usando lo stesso dtype dell'array di destinazione, in modo da non dover convertire manualmente i dtype. Attualmente faccio questo:Posso specificare un dtype numpy durante la generazione di valori casuali?
import numpy as np
x = np.zeros((10, 10), dtype='f')
x += np.random.randn(*x.shape).astype('f')
Quello che mi piacerebbe fare, invece dell'ultima riga è qualcosa di simile:
x += np.random.randn(*x.shape, dtype=x.dtype)
ma randn
(e in realtà nessuno dei metodi numpy.random
) non accetta un Argomento dtype
.
La mia domanda specifica è, è possibile specificare un dtype per i numeri casuali quando li creo, senza dover chiamare astype
? (La mia ipotesi è che il generatore di numeri casuali sia lungo 64 bit, quindi non ha senso farlo, ma ho pensato di chiedere se è possibile.)
numpy converte automaticamente il tipo di array casuale nel tipo di 'x' quando si esegue l'operazione sul posto, non c'è assolutamente bisogno di' astype', semplicemente 'x + = np.random.randn (* x.shape) ', e vedi da te che' x.dtype' non cambia. – Jaime