Как перебрать матрицу и изменить число с помощью вычисления? - PullRequest
0 голосов
/ 31 января 2020

У меня есть следующий список:

N_division_n = [0.0, 1.0, 0.4150374992788437]

И у меня есть следующая матрица:

sample_collection =
[['', 'test1.txt', 'test2.txt', 'test3.txt', 'test4.txt'], 
['apple', 1.0, 1.0, 1.0, 1.0], 
['banana', 1;0, 1.0, 0.0, 0.0], 
['lemon', 1.0, 0.0, 2.0, 1.0]]

Я хотел бы умножить все значения в строках матрицы на соответствующее значение в предыдущий список. Например: apple values * 0.0, banana values * 1.0, lemon values * 0.4150374992788437.

Я пытался построить следующее, но он не хочет перебирать поплавки, и я не уверен, как это исправить.

def tf_df_calculation(sample_collection):
    for a in range(1,len(sample_collection)):
        tf_df_list = [item[a] for item in N_division_n]
        value_a = 0
        for i in tf_df_list:
            if type(i) is float:
                value_a = i * N_division_n
                sample_collection.append(value_a)

tf_df_calculation(sample_collection)

ожидаемый результат :

[['', 'test1.txt', 'test2.txt', 'test3.txt', 'test4.txt'], 
['apple',  0.0, 0.0, 0.0, 0.0], 
['banana',  1.0, 1.0, 0.0, 0.0], 
['lemon',  0.41503749927884376, 0.0, 0.8300749985576875, 0.41503749927884376]]

Ответы [ 2 ]

1 голос
/ 31 января 2020

Эта простая функция работает, но использует два для цикла. В любом случае, это не проблема, если ваши матрицы маленькие.

N_division_n = [0.0, 1.0, 0.4150374992788437]

sample_collection = [['', 'test1.txt', 'test2.txt', 'test3.txt', 'test4.txt'], 
['apple', 1.0, 1.0, 1.0, 1.0], 
['banana', 1.0, 1.0, 0.0, 0.0], 
['lemon', 1.0, 0.0, 2.0, 1.0]]

def tf_df_calculation(sample_collection):
    for a in range(1,len(sample_collection)):
        for b in range(1,len(sample_collection[a])):
            sample_collection[a][b] *= N_division_n[a-1]

tf_df_calculation(sample_collection)

print(sample_collection)

Вывод

[['', 'test1.txt', 'test2.txt', 'test3.txt', 'test4.txt'], ['apple', 0.0, 0.0, 0.0, 0.0], ['banana', 1.0, 1.0, 0.0, 0.0], ['lemon', 0.4150374992788437, 0.0, 0.8300749985576874, 0.4150374992788437]]
1 голос
/ 31 января 2020

Здесь вы go:

N_division_n = [0.0, 1.0, 0.4150374992788437]

sample_collection =[['', 'test1.txt', 'test2.txt', 'test3.txt', 'test4.txt'], ['apple', 1.0, 1.0, 1.0, 1.0], ['banana', 1.0, 1.0, 0.0, 0.0], ['lemon', 1.0, 0.0, 2.0, 1.0]]

results = [sample_collection[0]]
count = 0
for sample in sample_collection[1::]:
    calculated_line = [sample[0]] + [x*N_division_n[count] for x in sample[1::]]
    results.append(calculated_line)
    count += 1

Вывод:

[['', 'test1.txt', 'test2.txt', 'test3.txt', 'test4.txt'], ['apple', 0.0, 0.0, 0.0, 0.0], ['banana', 1.0, 1.0, 0.0, 0.0], ['lemon', 0.4150374992788437, 0.0, 0.8300749985576874, 0.4150374992788437]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...