una tablas sumar suma seleccionar promedio para lista leer funciones elementos datos columnas python

python - tablas - ¿Cómo sumo las columnas en la lista 2D?



sumar columnas pandas (4)

Digamos que tengo una lista 2D de Python como se muestra a continuación:

my_list = [ [1,2,3,4], [2,4,5,6] ]

Puedo obtener los totales de las filas con una lista de comprensión:

row_totals = [ sum(x) for x in my_list ]

¿Puedo obtener los totales de columna sin un doble for bucle? Es decir, para obtener esta lista:

[3,6,8,10]


El map(sum,zip(*my_list)) soluciones map(sum,zip(*my_list)) es el más rápido. Sin embargo, si necesita mantener la lista, [x + y for x, y in zip(*my_list)] es el más rápido.

La prueba se realizó en Python 3.1.2 64 bit.

>>> import timeit >>> my_list = [[1, 2, 3, 4], [2, 4, 5, 6]] >>> t1 = lambda: [sum(x) for x in zip(*my_list)] >>> timeit.timeit(t1) 2.5090877081503606 >>> t2 = lambda: map(sum,zip(*my_list)) >>> timeit.timeit(t2) 0.9024796603792709 >>> t3 = lambda: list(map(sum,zip(*my_list))) >>> timeit.timeit(t3) 3.4918002495520284 >>> t4 = lambda: [x + y for x, y in zip(*my_list)] >>> timeit.timeit(t4) 1.7795929868792655


Usar zip

col_totals = [ sum(x) for x in zip(*my_list) ]


>>> map(sum,zip(*my_list)) [3, 6, 8, 10]

O los equivalentes de itertools.

>>> from itertools import imap, izip >>> imap(sum,izip(*my_list)) <itertools.imap object at 0x00D20370> >>> list(_) [3, 6, 8, 10]


[x + y for x, y in zip(*my_list)]