假设我们有几个数组(在我的例子中是三个:a1
、、、a2
)a3
。我们还有一组随机均匀分布的数字,r
。它们的长度相同。我需要构建一个a
由这三个初始a1
,组合而成的数组a2
,a3
以便如果r[i]
满足特定条件 1,我们取a1[i]
as 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
具有给定分布的随机数)。它太慢了,我需要以某种方式对其进行矢量化,但不知道如何去做。哪个是最好的方法?非常感谢!