Quelle est la meilleure façon de créer un tableau NumPy d'une size donnée avec des valeurs réparties au hasard et uniformément entre -1 et 1 ?
J'ai essayé 2*np.random.rand(size)-1
3 Réponses :
Je peux utiliser numpy.arange :
import numpy as np print(np.arange(start=-1.0, stop=1.0, step=0.2, dtype=np.float))
Le paramètre step définit la taille et l'uniformité dans la distribution des éléments.
Je ne suis pas sûr. Essayer:
s = np.random.uniform(-1, 1, size)
référence: https://docs.scipy.org/doc/numpy/reference/generated/numpy.random.uniform.html
Dans votre solution, np.random.rand(size) renvoie des flottants aléatoires dans l'intervalle semi-ouvert [0.0, 1.0)
cela signifie 2 * np.random.rand(size) - 1 renvoie des nombres dans l'intervalle semi-ouvert [0, 2) - 1: = [-1, 1), c'est-à-dire une plage comprenant -1 mais pas 1.
Si c'est ce que vous souhaitez faire, ce n'est pas grave.
Mais, si vous souhaitez générer des nombres dans l'intervalle ouvert (-1, 1), c'est -à- dire entre -1 et 1 et donc n'incluant ni -1 ni 1, puis-je suggérer ce qui suit -
from numpy.random import default_rng rg = default_rng(2) size = (5,5) rand_arr = rg.random(size) rand_signs = rg.choice([-1,1], size) rand_arr = rand_arr * rand_signs print(rand_arr)
J'ai utilisé le nouveau générateur suggéré par numpy, voir le lien https://numpy.org/devdocs/reference/random/index.html#quick-start
Ça devrait marcher.
Votre chemin me semble bien.
Quel est le problème avec ce que vous avez essayé?
Merci. Vous avez raison, cela fonctionne. Je cherchais une fonction numpy qui me donnerait un tel tableau sans l'astuce x2.