从列//将列数据转换为列表计算特定数字的出现次数

时间:2014-10-11 01:09:04

标签: python list count

我有以下数据格式

 ....
 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)命令了。

谢谢

2 个答案:

答案 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)