Как l oop через матрицу и посчитать нулевые значения? - PullRequest
1 голос
/ 30 января 2020
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]

Ответы [ 2 ]

4 голосов
/ 30 января 2020

Используйте понимание списка, это должно работать:

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

print(counts)
>>> [4, 2, 3]
1 голос
/ 30 января 2020

Это может быть достигнуто так:

non_zero_term_frequencies = []
for list_ in frequency_matrix[1:]:
    non_zero = len(list_[1:]) \
               - len([x for x in list_ if x == 0])
    non_zero_term_frequencies.append(non_zero)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...