1

我对 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 的情况下完成上述操作。

谢谢。

4

3 回答 3

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)]
于 2014-03-27T12:53:01.613 回答
0

你试过reduce函数吗?您使用函数(将其视为您的运算符)和列表调用它,并按照您描述的方式应用它。

于 2014-03-27T12:57:38.693 回答
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)

编码快乐!!!!

于 2014-03-27T13:18:40.720 回答