【发布时间】:2016-10-13 20:05:57
【问题描述】:
我有一个单词列表,列表中有大约 273000 个单词Word_array
大约有17000个唯一词,它们存储在Word_arrayU
我想为每一个计数
#make bag of worsds
Word_arrayU = np.unique(Word_array)
wordBag = [['0','0'] for _ in range(len(Word_array))] #prealocate necessary space
i=0
while i< len(Word_arrayU): #for each unique word
wordBag[i][0] = Word_arrayU[i]
#I think this is the part that takes a long time. summing up a list comprehension with a conditional. Just seems sloppy
wordBag[i][1]=sum([1 if x == Word_arrayU[i] else 0 for x in Word_array])
i=i+1
用条件总结列表理解。只是看起来很草率;有更好的方法吗?
【问题讨论】:
-
为什么不使用
collections.Counter? -
您是否考虑过使用集合中的计数器?它的唯一目的是为您提供一个字典,其中键是可迭代项中的项,值是可迭代项中这些项的计数...
-
@jonrsharpe 我喜欢我们的想法......
-
len([x for x in Word_array if x == Word_arrayU[i]]) -
len(filter(Word_arrayU[i], Word_array))