Форма (3, 1)
дает вам матрицу 3 на 1; 1 столбец в каждой из 3 строк. Это только 3 значения.
Умножение и вычитание принимает диапазон значений, которые numpy.random.random()
производит, чтобы получить более широкий диапазон.
random()
всегда выдает значения с плавающей запятой от 0 до 1, умножая их на 2, а затем вычитая 1 означает, что теперь у вас есть значения от -1 до 1.
См. numpy.random.random()
документацию :
Возвращать случайные числа с плавающей точкой в полуоткрытом интервале [0.0, 1.0).
Результаты получены из «непрерывного равномерного» распределения за указанный интервал. Чтобы сэмплировать Unif [a, b), b> a, умножьте вывод random_sample
на (b-a) и добавьте a:
(b - a) * random_sample() + a
(обратите внимание, что np.random.random()
это псевдоним np.random.random_sample()
)
Таким образом, чтобы получить значения между a = -1
и b = 1
, вам нужно умножить на b - a = 2
и затем вычесть 1 (+ -1
).
Вы можете попробовать запустить код в интерактивном сеансе:
>>> import numpy as np
>>> np.random.random((3, 1)) # a 3 x 1 matrix of values between 0 and 1
array([[0.11605033],
[0.31756365],
[0.4690499 ]])
>>> 2 * np.random.random((3, 1)) # a 3 x 1 matrix of values between 0 and 2
array([[1.30127808],
[0.3982432 ],
[1.96544242]])
>>> 2 * np.random.random((3, 1)) - 1 # a 3 x 1 matrix of values between -1 and 1
array([[ 0.39767412],
[-0.83410998],
[-0.62446309]])