在不使用numpy的情况下,Python对列表的列表进行点乘

1 投票
3 回答
1012 浏览
提问于 2025-04-18 00:08

我刚开始学习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

你可以通过下面的代码来解决这个问题,

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)

祝你编码愉快!!!!

0

你试过使用reduce函数吗?你可以把它想象成一个操作符,它需要一个函数和一个列表。然后它会按照你描述的方式来处理这些数据。

6
import operator
a_dot = [reduce(operator.mul, col, 1) for col in zip(*a)]
a_dot = [all(col) for col in zip(*a)]

但是如果你所有的数据都是0和1的话:

撰写回答