Python сумма значений столбцов из указанных c строк - PullRequest
0 голосов
/ 05 августа 2020

Новичок на python здесь. Я пытался понять, как суммировать значения из одного столбца, но из разных строк. Я пытался найти, как это сделать, но дело в том, что мне нужно только значение из определенного c количества строк, а не всех из них.

List = [ [1,2,3,4],
         [1,2,3,4],
         [1,2,3,4],
         [1,2,3,4],
         [1,2,3,4]  ]

Например, как сделать Я суммирую значения в столбце 2 только из строки 0-2 (итого 3 + 3 + 3), но не в строке 3 или 4? Очень благодарен за любую помощь!

Ответы [ 5 ]

2 голосов
/ 05 августа 2020

List = [ [1,2,3,4],
         [1,2,3,4],
         [1,2,3,4],
         [1,2,3,4],
         [1,2,3,4]  ]

rows_to_sum = (0,1,2)
column = 2
_sum = 0

for each in rows_to_sum:
    _sum += List[each][column]

print(_sum)

Или, используя понимание:

_sum = sum(List[each][column] for each in rows_to_sum)

Вывод: 9

1 голос
/ 05 августа 2020

Вот простая функция, в которой вы можете объявить строки и столбец вашего списка и получить сумму значений:

def sum_up(the_list, rows, col):
    return sum(the_list[i][col] for i in rows)

print(sum_up(List, (0,1,2), 2))
# 9
1 голос
/ 05 августа 2020

Для такого рода матричных операций я рекомендую вам использовать библиотеку numpy.

С помощью numpy вы можете легко разделить матрицу [start_row: stop_row, start_col: stop_col].

import numpy as np 
l = np.array([[1,2,3,4],
             [1,2,3,4],
             [1,2,3,4],
             [1,2,3,4],
             [1,2,3,4]])

sum(l[0:3, 2])
0 голосов
/ 05 августа 2020

Вы можете сделать это с помощью списка

sum([List[i][2] for i in range(3)])

или

sum([l[2] for l in List[:3]])

Хотя numpy обеспечивает гораздо более элегантное и быстрое решение для больших массивов

l = np.array(List)
s = np.sum(l[:3, 2])
0 голосов
/ 05 августа 2020

Думаю, так и должно быть.

for i in List:
    sum = sum + i[3]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...