我对python很陌生,并且正在研究数组,我对一个相当简单的问题感到震惊。我有一个列表清单,如下:
a = [[1,0,1,0,1],[0,0,1,0,1],[0,0,1,0,1],[1,1,1,0,1],[1,0,0,0,0]]
我希望将每个列表的元素相互叠加。类似的东西:
a_dot = [1,0,1,0,1]*[0,0,1,0,1]*[0,0,1,0,1]*[1,1,1,0,1]*[1,0,1,0,0]
=[0,0,1,0,0]
想知道我是否可以使用numpy / scipy完成上述 。
感谢。
答案 0 :(得分:6)
import operator
a_dot = [reduce(operator.mul, col, 1) for col in zip(*a)]
但如果您的所有数据都是0和1:
a_dot = [all(col) for col in zip(*a)]
答案 1 :(得分:0)
您是否尝试过reduce功能?您可以使用函数(将其视为运算符)和列表调用它,并按照您描述的方式应用它。
答案 2 :(得分:0)
您可以通过以下代码解决,
def multiply(list_a,list_b):
c = []
for x,y in zip(list_a,list_b):
c.append(x*y)
return c
reduce(lambda list_a,list_b: multiply(list_a,list_b), a)
快乐编码!!!!