Python点对象列表列表,不使用numpy

时间:2014-03-27 12:49:48

标签: python computation dot-product mathematical-expressions

我对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完成上述

感谢。

3 个答案:

答案 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)

快乐编码!!!!