1
votes

valeurs de tableau aléatoire numpy comprises entre -1 et 1

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


4 commentaires

Ç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.


3 Réponses :


0
votes

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.


0 commentaires

3
votes

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


0 commentaires

0
votes

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


0 commentaires