gpt4 book ai didi

python - 如何从 python 中的 numpy 矩阵中检索每对可能的列的唯一出现次数的频率

转载 作者:太空狗 更新时间:2023-10-30 02:33:02 26 4
gpt4 key购买 nike

我有一个像这样使用 numpy 矩阵的矩阵:

>>> print matrix
[['L' 'G' 'T' 'G' 'A' 'P' 'V' 'I']
['A' 'A' 'S' 'G' 'P' 'S' 'S' 'G']
['A' 'A' 'S' 'G' 'P' 'S' 'S' 'G']
['G' 'L' 'T' 'G' 'A' 'P' 'V' 'I']]

我想要的是对于每一对可能的列,从每对列的行中检索每对字母的唯一出现次数的频率。

例如,对于第一对列,即:

[['L' 'G']
['A' 'A']
['A' 'A']
['G' 'L']]

我想检索列中每对字母的频率(注意:字母的顺序很重要)

Frequency of ['L' 'G'] = 1/4

Frequency of ['A' 'A'] = 2/4

Frequency of ['G' 'L'] = 1/4

一旦计算出第一对列的这些频率,然后对每对其他可能的列组合执行相同的操作。

我认为某种 itertools 可以帮助解决这个问题,但我不知道如何...任何帮助将不胜感激

最佳答案

我会使用 itertools.combinationscollections.Counter:

for i, j in itertools.combinations(range(len(s.T)), 2):
c = s[:, [i,j]]
counts = collections.Counter(map(tuple,c))
print 'columns {} and {}'.format(i,j)
for k in sorted(counts):
print 'Frequency of {} = {}/{}'.format(k, counts[k], len(c))
print

产生

columns 0 and 1
Frequency of ('A', 'A') = 2/4
Frequency of ('G', 'L') = 1/4
Frequency of ('L', 'G') = 1/4

columns 0 and 2
Frequency of ('A', 'S') = 2/4
Frequency of ('G', 'T') = 1/4
Frequency of ('L', 'T') = 1/4

[...]

(如果您想要两个顺序,将其修改为执行 0 1 和 1 0 两列是微不足道的,而且我假设每对可能的列不是指“每对 相邻列数”)。

关于python - 如何从 python 中的 numpy 矩阵中检索每对可能的列的唯一出现次数的频率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15187355/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com