用numpy构造转移矩阵

时间:2014-05-14 21:38:15

标签: python numpy matrix linear-algebra

我需要构建一个随机转移矩阵。给定N_by_N矩阵M,M [i,j]是i和j之间的概率。问题是我需要构造M,我需要构建的M是以下内容:

  • 矩阵R,与M相同,除了如果i和j之间的概率> 1,则R [i,j] = 1。 0.(R非常稀疏)

  • 函数Pr(i,j)给出i和j之间的概率。

所以我有R和Pr,我需要构建M.我能想到这样做的唯一方法是使用昂贵的python循环,我想知道是否有一种快速的方法可以用numpy做到这一点。

1 个答案:

答案 0 :(得分:0)

如果我理解你的问题,M将与R一样稀疏,(因为R [i,j] == 1 iff Pr(i,j)> 0)。然后,您只需为Pr(i,j,)的非零元素运行R,您可以使用numpy where函数获取该元素:

I,J=where(R)

现在你的循环大大减少了(假设R确实很稀疏):

M=zeros(R.shape)

for i,j in zip(I,J):
    M[i,j]=Pr(i,j)