首页 > 解决方案 > 如何遍历矩阵并计算零项值?

问题描述

sample collection = 
[['', 'test1.txt', 'test2.txt', 'test3.txt', 'test4.txt'], 
['apple', 1, 1, 1, 1], 
['banana', 1, 1, 0, 0], 
['lemon', 1, 0, 2, 1]]

在准备 tf-idf 计算时,我想收集每一行的“命中”数量,也就是不为零的次数。

我尝试了以下方法,但我被卡住了:

def n_calc(frequency_matrix):
    non_zero_term_frequencies = []
    for list_ in sample_collection:
        for value in list_:
            if value != 0.0:
                non_zero_term_frequencies += 1
            else:
                pass

idf_calc(sample_collection)

所需的输出:

non_zero_term_frequencies: [4, 2, 3]

标签: pythonpython-3.xmatrix

解决方案


使用列表理解,这应该有效:

counts = [
    sum(1 if value else 0 for value in line[1:]) for line in collection[1:]
]

print(counts)
>>> [4, 2, 3]

推荐阅读