Как эффективно искать изменения состояния в матрице переходов с NumPy? - PullRequest
0 голосов
/ 23 апреля 2019

Я делаю некоторую работу с цепями Маркова, и мне нужно найти вероятность перехода из матрицы перехода, учитывая последовательность изменений состояния.Как сделать это эффективно в 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 Ответ

0 голосов
/ 23 апреля 2019

Просто используйте 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]
...