2016-12-12 2 views
0

Я пытаюсь создать numpy ndarray, который имеет c столбцов и n строк, но заполненных цифрами, взятыми из случайного нормального распределения. Я бы хотел, чтобы распределение было нормальным по столбцам, т. Е. Я хочу, чтобы столбец c/2 имел значения, близкие к среднему (делая случайное число в столбце c/2 выше, чем слева или справа от него). Есть ли встроенная функция numpy для этого? Если нет, мы можем указать в numpy random normal, чтобы дать нам значения в пределах диапазона из распределения, чтобы я мог заполнять столбцы индивидуально.numpy random normal over columns

+1

Определение «близко к среднему». Вы хотите, чтобы средний столбец (это то, что вы подразумеваете под c/2?), Чтобы иметь значения из более узкого распределения (уменьшить сигму) или ближайшего к образцу (сортировать строки?) –

+0

Если у меня есть 3 столбца, d хотите, чтобы столбец 0 имел значение 0,25, в столбце 1 - 0,5, а столбец 2 - 0,24. поэтому величина значений будет следовать кривой колокола со средним значением в среднем столбце. – user3325146

+0

Итак, в вашем примере '[0.25, 0.5, 0.24]', число 0.5 - среднее? Которого? «Следовать за кривой колокола» означает не меньшие значения, а затем больше, а затем меньше. – FTP

ответ

2

Ну вы могли бы сделать что-то вроде этого:

scales = [0.01, 0.1, 1, 0.1, 0.01] 
arrays = [np.random.normal(loc=0, scale=s, size=(3)) for s in scales] 
np.vstack(arrays).T 

array([[ 0.0021688 , -0.11704194, 0.84077943, 0.13570005, -0.01371024], 
     [ 0.01726078, -0.00167188, -0.85074286, 0.01729595, 0.00696604], 
     [ 0.00169041, -0.11899872, 0.34075113, 0.08299408, 0.00296036]]) 
Смежные вопросы