<p>如果元素的数量很少,那么简单地在所有元素上循环应该没有问题:</p>
<pre><code>import numpy as np
a = [['A', 'B'], ['B', 'B'], ['B', 'C'], ['C', 'B'], ['B', 'A'],
['A', 'D'], ['D', 'D'], ['D', 'A'] ['A', 'B'], ['B', 'A'], ['A', 'D']]
a = np.asarray(a)
elems = np.unique(a)
dim = len(elems)
P = np.zeros((dim, dim))
for j, x_in in enumerate(elems):
for k, x_out in enumerate(elems):
P[j,k] = (a == [x_in, x_out]).all(axis=1).sum()
if P[j,:].sum() > 0:
P[j,:] /= P[j,:].sum()
</code></pre>
<p>输出:</p>
^{pr2}$
<p>但是,您也可以使用带有预先分配的转换矩阵的计数器,将元素映射到索引,将计数指定为值,并规范化(最后两个步骤与我一样)。在</p>