如何使用 numpy 有效地查找转换矩阵中的状态变化?

Posted

技术标签:

【中文标题】如何使用 numpy 有效地查找转换矩阵中的状态变化?【英文标题】:How to efficiently lookup state changes in a transition matrix with numpy? 【发布时间】:2019-09-12 09:57:04 【问题描述】:

我正在使用马尔可夫链做一些工作,我需要从给定状态变化序列的转移矩阵中查找转移概率。如何在 numpy 中有效地做到这一点?

例如:

import numpy as np

#here is the sequence that I need to look up in the transition matrix
sequence = [0, 1, 0, 1, 1]

#the transition matrix that gives the probability to change between each 
of the states
transition_matrix = np.array([[0.2, 0.8], [0.6, 0.4]])

#desired output
result = [0.8, 0.6, 0.8, 0.4]

所以结果只是在转移矩阵中查找的概率值。当状态多且序列很长时,如何有效地做到这一点?

谢谢。

【问题讨论】:

【参考方案1】:

只需使用zip:

result = []
for (step, next_step) in zip(sequence[:-1], sequence[1:]):
    result.append(transition_matrix[step][next_step])

结果:

[0.8, 0.6, 0.8, 0.4]

【讨论】:

以上是关于如何使用 numpy 有效地查找转换矩阵中的状态变化?的主要内容,如果未能解决你的问题,请参考以下文章

python如何挑选矩阵中的不相领的列组成新的矩阵

将字典列表转换为 numpy 矩阵? [复制]

如何将一系列数组转换为 pandas/numpy 中的单个矩阵?

如何检查numpy矩阵的列中的所有值是不是相同?

使用 Python 替换矩阵中的特定值

如何将 .csv 文件中的数据转换为 NumPy 数组并使用统计数据来查找数据的平均值? [复制]