Обычно uniform
используется для указания скалярных значений start
и stop
и формы:
In [101]: np.random.uniform(0,1,size=(3,4))
Out[101]:
array([[0.87953793, 0.83726369, 0.53280941, 0.69611469],
[0.78369061, 0.99258945, 0.65533223, 0.8342177 ],
[0.69943211, 0.53965698, 0.06419811, 0.36591087]])
Это 12 значений, взятых из [0,1), расположенных в массиве (3,4).
В документации сказано, что start
и stop
могут быть массивами, но не очень понятно, как они используются. Лучшая подсказка в:
np.broadcast(low, high).size
образцы взяты.
Таким образом, пробуя (3,1) и (1,4) входные данные, мы снова получаем массив (3,4).
In [102]: np.random.uniform(np.zeros((3,1)), np.ones((1,4)))
Out[102]:
array([[0.35865707, 0.39068231, 0.9117642 , 0.49346499],
[0.1439195 , 0.1217748 , 0.21780452, 0.83235673],
[0.24894503, 0.36413268, 0.51516651, 0.8480244 ]])
Чтобы сгенерировать 3 числа из (0,1), (10,11) и (20,21) соответственно:
In [105]: np.random.uniform(np.arange(0,30,10), np.arange(1,31,10))
Out[105]: array([ 0.54715093, 10.75390957, 20.98101312])
Я не знаю, что вы пытаетесь сделать с этими 4 массивами.
In [107]: par1 = np.arange(10,80) # corrected usage
...: par2 = np.arange(50,120)
...: par3 = np.arange(0,40)
...: par4 = np.arange(0,30)
Я мог бы объединить эти 4 массива в один:
In [108]: par = np.concatenate([par1,par2,par3,par4])
In [109]: par.shape
Out[109]: (210,)
При различной длине эта hstack
является единственной опцией.
Обратите внимание, что я создал список этих массивов и использовал его в качестве входных данных для concatenate
(как и ожидалось).
In [110]: alist = [par1,par2,par3,par4]
Список списков или список массивов - это простая конструкция Python. Это, безусловно, следует использовать, прежде чем пытаться создать массив массивов (разных размеров). Но я не понимаю, как это относится к uniform
(как я только что проиллюстрировал).
Другой (3,4) массив случайных значений:
In [111]: np.random.uniform(np.arange(3)[:,None], np.arange(4))
Out[111]:
array([[0. , 0.74651856, 0.60318064, 0.75254649],
[0.49864947, 1. , 1.60558937, 2.06444058],
[1.03298196, 1.80321816, 2. , 2.3358475 ]])
Каждый элемент взят из другого диапазона
[0,0) [0,1) [0,2)
[1,0) [1,1) [1,2)
[2,0) ...