Puis-je indiquer une numpy dtype lors de la génération de valeurs aléatoires?

Je suis de la création d'un numpy tableau de valeurs aléatoires et de les ajouter à un groupe existant contenant 32 bits flottant. J'aimerais générer des valeurs aléatoires à l'aide de la même dtype que la matrice cible, de sorte que je n'ai pas à convertir les dtypes manuellement. Actuellement je fais ceci:

import numpy as np

x = np.zeros((10, 10), dtype='f')
x += np.random.randn(*x.shape).astype('f')

Ce que j'aimerais faire à la place de la dernière ligne est quelque chose comme:

x += np.random.randn(*x.shape, dtype=x.dtype)

mais randn (et en fait, aucun des numpy.random méthodes) ne pas accepter un dtype argument.

Mon question est, est-il possible de spécifier une dtype de nombres aléatoires lorsque je les créer, sans avoir à appeler astype? (Ma conjecture est que le générateur de nombre aléatoire est de 64 bits de long, de sorte qu'il n'a pas vraiment de raison de faire ça, mais j'ai pensé que je voudrais vous demander si c'est possible.)

  • numpy convertira automatiquement le type de votre ensemble aléatoire du type de x lorsque vous effectuez l'opération sur place, il n'y a absolument pas besoin de astype, il suffit de faire x += np.random.randn(*x.shape), et de voir par vous-même que x.dtype ne change pas.
InformationsquelleAutor lmjohns3 | 2014-04-29