from collections import Counter
import numpy as np
List = [[7,12,17,26,29,31],\
[4,9,11,17,26,27],\
[5,6,8,21,31,33],\
[3,17,21,23,27,28],\
[4,10,18,19,25,27],\
[5,8,13,19,27,28],\
[15,16,21,22,27,33],\
[11,12,13,14,18,33],\
[2,8,10,18,20,33],\
[2,7,10,20,27,29],\
]
for i in List:
print(i, List.count(i), (List.count(i)/len(List)))
[7, 12, 17, 26, 29, 31] 1 0.1
[4, 9, 11, 17, 26, 27] 1 0.1
[5, 6, 8, 21, 31, 33] 1 0.1
[3, 17, 21, 23, 27, 28] 1 0.1
[4, 10, 18, 19, 25, 27] 1 0.1
[5, 8, 13, 19, 27, 28] 1 0.1
[15, 16, 21, 22, 27, 33] 1 0.1
[11, 12, 13, 14, 18, 33] 1 0.1
[2, 8, 10, 18, 20, 33] 1 0.1
[2, 7, 10, 20, 27, 29] 1 0.1
我怎样才能得到这样的结果?用一行计算每个元素的出现次数。
2 2 0.2
3 1 0.1
4 2 0.2
5 1 0.1
...
33 4 0.4
我尝试了许多不同的方法,但始终得到相同的结果。 由于我是Python的新手,我希望有人可以帮我解决这个问题。 顺便说一句,如果有任何书籍清楚解释openpyxl,列表操作和计算科学,请帮助推荐。
非常感谢你。
答案 0 :(得分:0)
您现在正在做的是计算numpy数组中每一行(作为列表)的出现次数。因为它们只有在你得到1的时候才出现。
首先,我们必须得到数组中出现的所有数字:
counts = {u:0 for u in unique}
List = np.asarray(List)
for i in unique:
for row in List:
if i in row:
counts[i]+=1
然后我们可以遍历行并计算它们出现的频率:
for k,v in counts.items():
print(k,v,v/len(List))
最后,如果您想打印结果:
Use @Onclick(R.id.action_bar) void methodNAme()
{
//ToDo
}