np.random.rand vs np.random.random

Я нахожу Python (и его экосистему) полными странных условностей и несоответствий, и это еще один пример:

np.random.rand

Создайте массив данной формы и заполните его случайными выборками из равномерного распределения по [0, 1).

np.random.random

Возвращает случайные поплавки в полуоткрытом интервале [0.0, 1.0]. Результаты взяты из "непрерывного равномерного" распределения за указанный интервал.

??? В чем именно разница?

Ответ 1

Прежде всего обратите внимание, что numpy.random.random на самом деле является псевдонимом для numpy.random.random_sample. Я буду использовать последний в следующем. (См. этот вопрос и ответ для получения дополнительных псевдонимов.)

Обе функции генерируют выборки из равномерного распределения на [0, 1). Разница лишь в том, как обрабатываются аргументы. При numpy.random.rand длина каждого измерения выходного массива является отдельным аргументом. В numpy.random.random_sample аргумент формы представляет собой один кортеж.

Например, чтобы создать массив образцов с формой (3, 5), вы можете написать

sample = np.random.rand(3, 5)

или

sample = np.random.random_sample((3, 5))

(Действительно, это оно.)