【发布时间】:2018-03-01 16:17:54
【问题描述】:
我有两个矩阵:
- 二进制 A = [[1, 0, 1, 0], [0, 0, 1, 0]];
- 值矩阵 B = [[100, 200, 300, 400], [400, 300, 100, 200]];
我想计算由矩阵 A 的行形成的间隔的总和。例如。结果如下: R = [[300, 0, 700, 0], [0, 0, 300, 0]] (一般不需要设置零 [[300, 700], [300]] -这也是正确的解决方案)
我已经写了代码,但是非常非常糟糕(虽然它可以正常工作)
def find_halfsum(row1, row2):
i = 0
result = []
count = 0
for j in range(len(row1)):
if row1[j] == 1 and count == 0:
i = j
count += 1
elif row1[j] == 1:
count += 1
if count == 2:
if j == i + 1:
result.append(row2[i])
else:
result.append(sum(row2[i:j]))
i = j
count = 1
if j == len(row1) - 1:
result.append(sum(row2[i:j + 1]))
return result
有人知道漂亮的解决方案(这会更快)(最好在 numpy 的帮助下)?
谢谢
【问题讨论】:
标签: python-3.x algorithm numpy