Python 我有一张单子。我想添加一个与每个单词相关联的计数器变量。我该怎么做?

Python 我有一张单子。我想添加一个与每个单词相关联的计数器变量。我该怎么做?,python,arrays,list,Python,Arrays,List,我有一个单词列表,假设是 ['a', 'b', 'c', 'd'] 我有一个文档,我已经将一个文本文件预处理成一个矩阵,它是这样的: a,b,c,d 0,1,1,0 1,1,0,0 1,1,1,1 其中1表示句子中存在该词,0表示句子中不存在该词。我想逐行检查这个矩阵,并增加一些与上面原始单词列表相关的计数器,这样我就可以知道在最后的句子中每个单词有多少个 我怎么做这个?我必须创建关联阵列还是二维阵列?是否有一种方法可以在数组中创建一个新变量,该变量与我可以递增的每个单词关联 谢谢 您可以使

我有一个单词列表,假设是

['a', 'b', 'c', 'd']
我有一个文档,我已经将一个文本文件预处理成一个矩阵,它是这样的:

a,b,c,d
0,1,1,0
1,1,0,0
1,1,1,1
其中1表示句子中存在该词,0表示句子中不存在该词。我想逐行检查这个矩阵,并增加一些与上面原始单词列表相关的计数器,这样我就可以知道在最后的句子中每个单词有多少个

我怎么做这个?我必须创建关联阵列还是二维阵列?是否有一种方法可以在数组中创建一个新变量,该变量与我可以递增的每个单词关联

谢谢

您可以使用统计字数:

>>> from collections import Counter
>>> filedata = '''\
0,1,1,0
1,1,0,0
1,1,1,1
'''
>>> counter = Counter()
>>> for line in filedata.splitlines():
    a, b, c, d = map(int, line.split(','))
    counter['a'] += a
    counter['b'] += b
    counter['c'] += c
    counter['d'] += d


>>> counter
Counter({'b': 3, 'a': 2, 'c': 2, 'd': 1})
输出:

defaultdict(<type 'int'>, {'a': 2, 'c': 2, 'b': 3, 'd': 1})
Counter({'b': 3, 'a': 2, 'c': 2, 'd': 1})
输出:

defaultdict(<type 'int'>, {'a': 2, 'c': 2, 'b': 3, 'd': 1})
Counter({'b': 3, 'a': 2, 'c': 2, 'd': 1})

你所要做的就是对每一列求和,因为它只有0和1

import numpy as np
array = numpy.array((matrix))
answer = np.apply_along_axis(sum,0,array[1::])
my_dict = dict(zip(matrix[0],answer))

现在您有了一个字典,其中键是单词,值是出现的总数

我不想硬编码这些键,所以可能类似于:

import csv
from collections import Counter

with open("abcd.txt", "rb") as fp:
    reader = csv.DictReader(fp)
    c = Counter()
    for row in reader:
        c.update({k: int(v) for k,v in row.iteritems()})
产生

>>> c
Counter({'b': 3, 'a': 2, 'c': 2, 'd': 1})

如果已经描述了矩阵,可以执行以下操作:

mat=[['a','b','c','d'],
     [ 0,  1,  1,  0],
     [ 1,  1,  0,  0],
     [ 1,  1,  1,  1]]

print {t[0]:sum(t[1:]) for t in zip(*mat)}
印刷品:

{'a': 2, 'c': 2, 'b': 3, 'd': 1}

当然Numpy很棒,如果你在处理矩阵,它就是一个模块!很高兴我能帮上忙,我发现这有点令人惊讶。这使它看起来像是
matrix[0]
有键,在这种情况下,
answer=
行应该失败。你真的试过这个吗?很好!我进行了编辑,因此第一行不计入总和。谢谢,很好。请注意,在2.7/3.1之前的Python上,您需要对zip(*mat)中的t执行
dict([(t[0],sum(t[1:])))
,因为没有dict理解。