【发布时间】:2017-12-08 03:50:22
【问题描述】:
如何优雅地做到这一点(Pythonic方式)
您有两个矩阵 A 和 B,每个矩阵都由一个列表表示。
您想计算 A 和 B 的元素乘积矩阵的总和。
示例代码:
sum = 0
nrows = len(A)
ncols = len(A[0])
for i in range(nrows):
for j in range(ncols):
sum += A[i][j]*B[i][j]
# interested finally in the value of sum
# return sum
例如如果
A=[[1,2,3],[3,4,5]]
和
B=[[3,2,2],[1,1,1]]
结果是:
1*3 + 2*2 + 3*2 + 3*1 + 4*1 + 5*1 = 25
【问题讨论】:
-
这和一般情况下两个矩阵的点积是不一样的。
-
用
sum()或reduce()、zip()将每个矩阵展平成对,将每对与sum()结果相乘。可能是一个单一的班轮,但它不会是美丽的。 -
没错,它和两个矩阵的点积不一样,但是我不知道这个运算应该叫什么,我虽然点积表达了意思。