Допустим, у нас есть несколько массивов (в моем случае три: a1
, a2
, a3
). У нас также есть еще один массив случайных равномерно распределенных чисел r
. Все они одинаковой длины. Мне нужно построить массив a
, объединенный из этих трех начальных a1
, a2
, a3
, чтобы, если r[i]
удовлетворяет определенному условию 1, мы принимаем a1[i]
как a[i]
, если он удовлетворяет условию 2, мы берем a2[i]
и a3[i]
с условием 3. три условия являются взаимоисключающими.
Я написал для этого цикл for:
a = empty(len(r))
for i in range(len(r)):
if r[i] <= p1:
a[i] = a1[i]
if p1 < r[i] <= (p1 + p2):
a[i] = a2[i]
if r[i] > (p1 + p2):
a[i] = a3[i]
Здесь условия 1, 2, 3 выражаются после каждого «if ...
». p1
и p2
имеют номера. Это часть моделирования Монте-Карло (массивы a1
, a2
и a3
также являются случайными числами с заданным распределением). Это слишком медленно, мне нужно как-то векторизовать его, но я не знаю, как это сделать. Какой способ лучше? Большое спасибо!