我有以下数据格式
....
16 4 2 5 23 0 0 0 0
17 3 2 270 6 0 0 0 0
18 3 2 52 332 0 0 0 0
19 3 2 125 159 0 0 0 0
20 3 2 156 56 0 0 0 0
....
从这里开始,我使用for-loop-indexing访问每个列,例如
>>> print B[i]
...
4
3
3
3
3
...
在这里,我希望计算此列中出现的数字“7”的次数,因此,我尝试了
num_7 = [B[i]].count(7)
但这打印出来
...
0
0
0
0
0
...
而不是此列中出现7的次数(在我的数据中为168)。我认为这是因为[B [i]]被识别为单个元素的多个列表,而不是单个列表或多个元素的数组。当我打印[B [i]]时,它看起来像
...
[4]
[3]
[3]
[3]
[3]
...
我是否需要转置才能使用~~ .count(n)命令?如何从列中获取特定元素的出现次数?
这里真正的问题应该是,如何转换数据列
...
4
3
3
3
3
...
到列表
[..., 4, 3, 3, 3, 3, ...]
这样我就可以使用count(n)命令了。
谢谢
答案 0 :(得分:2)
count
是一个可迭代的方法。我怀疑你想要:
In [46]: B = [1,2,3,4,5]
In [47]: B.count(2)
Out[47]: 1
这假设B
是您要查找的列。如果您有这样的事情:
In [48]: B = [[1,2,3,4], [4,3,2,1], [7,8,9,10]]
然后,索引将为您提供一行而不是列:
In [51]: B[1]
Out[51]: [4, 3, 2, 1]
您需要重新设置此列才能获得列。这样做的常用方法如下:
In [54]: zip(*B)
Out[54]: [(1, 4, 7), (2, 3, 8), (3, 2, 9), (4, 1, 10)]
然后,您可以选择列并计算它们:
In [56]: zip(*B)[2].count(3)
Out[56]: 1
答案 1 :(得分:1)
显然B是一个数字列表。所以你根本不想循环。只是做:
B.count(7)