如何将Python数组的一列中所有值相加?最好不要导入任何其他库。
input_val = [[1, 2, 3, 4, 5],
[1, 2, 3, 4, 5],
[1, 2, 3, 4, 5]]
output_val = [3, 6, 9, 12, 15]
我知道这可以在嵌套的for循环中完成,不知道是否有更好的方法(例如列表推导式)?
如何将Python数组的一列中所有值相加?最好不要导入任何其他库。
input_val = [[1, 2, 3, 4, 5],
[1, 2, 3, 4, 5],
[1, 2, 3, 4, 5]]
output_val = [3, 6, 9, 12, 15]
我知道这可以在嵌套的for循环中完成,不知道是否有更好的方法(例如列表推导式)?
[sum(x) for x in zip(*input_val)]
zip
函数会将输入列表中的元素进行转置,因此包含列表的每个元素将在同一时间产生。这使得 sum
函数可以看到每个包含列表的第一个元素,下一次迭代将获取每个列表的第二个元素,以此类推...
测试代码:
input_val = [[1, 2, 3, 4, 5],
[1, 2, 3, 4, 5],
[1, 2, 3, 4, 5]]
print([sum(x) for x in zip(*input_val)])
结果:
[3, 6, 9, 12, 15]
如果您决定使用任何库,那么numpy很容易实现这一点:
np.sum(input_val,axis=0)
import numpy as np
arr = np.array(([1, 2, 3, 4, 5],[1, 2, 3, 4, 5],[1, 2, 3, 4, 5]))
在轴参数设置为零的情况下,将sum()函数应用于数组的列:
arr.sum(axis = 0)
试试这个:
input_val = [[1, 2, 3, 4, 5],
[1, 2, 3, 4, 5],
[1, 2, 3, 4, 5]]
output_val = [sum([i[b] for i in input_val]) for b in range(len(input_val[0]))]
print output_val
我想你可以使用:
import numpy as np
new_list = sum(map(np.array, input_val))
这应该可以工作:
[sum(i) for i in zip(*input_val)]
我认为这是最符合Python风格的做法。
map(sum, [x for x in zip(*input_val)])
input_val = [[1, 2, 3, 4, 5],
[1, 2, 3, 4, 5],
[1, 2, 3, 4, 5]]
2:Numpy可以为您进行数学计算
np.sum(input_val,axis=0)
3:最后是结果
array([ 3, 6, 9, 12, 15])
使用列表推导式的一行代码:对于每一列(即一行的长度),生成该列所有条目的列表,并对该列表求和。
output_val = [sum([input_val[i][j] for i in range(len(input_val))]) \
for j in range(len(input_val[0]))]