Skip to content Skip to sidebar Skip to footer

Numpy Random Array Values Between -1 And 1

what is the best way to create a NumPy array of a given size with values randomly and uniformly spread between -1 and 1? I tried 2*np.random.rand(size)-1

Solution 1:

I'm not sure. Try:

s = np.random.uniform(-1, 1, size)

reference: https://docs.scipy.org/doc/numpy/reference/generated/numpy.random.uniform.html

Solution 2:

I can use numpy.arange:

import numpy as np

print(np.arange(start=-1.0, stop=1.0, step=0.2, dtype=np.float))

The step parameter defines the size and the uniformity in the distribution of the elements.

Solution 3:

In your solution the np.random.rand(size) returns random floats in the half-open interval [0.0, 1.0)

this means 2 * np.random.rand(size) - 1 returns numbers in the half open interval [0, 2) - 1 := [-1, 1), i.e. range including -1 but not 1.

If this is what you wish to do then it is okay.

But, if you wish to generate numbers in the open interval (-1, 1), i.e. between -1 and 1 and hence not including either -1 or 1, may I suggest the following -

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)

I have used the new suggested Generator per numpy, see link https://numpy.org/devdocs/reference/random/index.html#quick-start

Post a Comment for "Numpy Random Array Values Between -1 And 1"