擅长:python、mysql、java
<h3><code>Counter</code></h3>
<pre><code>from collections import Counter
pd.Series(Counter(
(c, i) for i, C in enumerate(zip(*jkl)) for c in C)
).unstack(fill_value=0)
0 1 2 3
A 1 1 0 1
C 1 0 1 1
G 1 0 1 1
T 0 2 1 0
</code></pre>
<hr/>
<pre><code>pd.Series(Counter(
(c, i) for i, C in enumerate(zip(*jkl)) for c in C
)).unstack(fill_value=0).T.to_dict('l')
{'A': [1, 1, 0, 1], 'C': [1, 0, 1, 1], 'G': [1, 0, 1, 1], 'T': [0, 2, 1, 0]}
</code></pre>
<hr/>
<hr/>
<h3><code>np.add.at</code></h3>
<p>完全不同的策略</p>
<pre><code>r, i = np.unique([*''.join(jkl)], return_inverse=True)
n, m = len(r), len(jkl)
j = np.tile(np.arange(n), m)
a = np.zeros((n, n), int)
np.add.at(a, (i, j), 1)
</code></pre>
<h3><code>DataFrame</code></h3>
<pre><code>pd.DataFrame(a, r)
0 1 2 3
A 1 1 0 1
C 1 0 1 1
G 1 0 1 1
T 0 2 1 0
</code></pre>
<h3><code>Dictionary</code></h3>
<pre><code>dict(zip(r, a.tolist()))
{'A': [1, 1, 0, 1], 'C': [1, 0, 1, 1], 'G': [1, 0, 1, 1], 'T': [0, 2, 1, 0]}
</code></pre>