我有以下数组:
a=[['A', 'B'],
['B', 'B'],
['B', 'C'],
['C', 'B'],
['B', 'A'],
['A', 'D'],
['D', 'D'],
['D', 'A'],
['A', 'B'],
['B', 'A'],
['A', 'D']]
我想做一个转移概率矩阵,这样我得到:
^{pr2}$在图中,{{cd2>中,有多少个 它将数组的元素正确计数为: 所以矩阵应该是from collections import Counter
Counter(tuple(x) for x in l)
Counter({('A', 'B'): 2,
('B', 'B'): 1,
('B', 'C'): 1,
('C', 'B'): 1,
('B', 'A'): 2,
('A', 'D'): 2,
('D', 'D'): 1,
('D', 'A'): 1})
[[0,2/5,0,2/5],[2/4,1/4,1/4,0],[0,1,0,0],[1/2,0,0,1/2]]
输出:
^{pr2}$如果元素的数量很少,那么简单地在所有元素上循环应该没有问题:
输出:
^{pr2}$但是,您也可以使用带有预先分配的转换矩阵的计数器,将元素映射到索引,将计数指定为值,并规范化(最后两个步骤与我一样)。在
基于熊猫的解决方案:
相关问题 更多 >
编程相关推荐