如何在python中总结两个索引?

时间:2016-06-10 15:31:12

标签: python numpy sum

有人可以帮我解决sum功能吗?

我试图总结两个指数。我想获得以下结果:

p_t[0, 0]+p_t[0, 1]+p_t[0, 2]+p_t[1, 0]+p_t[1, 1]+p_t[1, 2]+p_t[2,0]+p_t[2, 1]+p_t[2, 2]

,使用此代码:

num_products=3
sum (p_t[i, j] for i,j in range(num_products))

但我收到错误:

  

TypeError Traceback(最近一次调用最后一次)        in()       ----> 1 sum(p_t [i,j]表示i,j表示范围(num_products))        in( 解析参数失败 )       TypeError:' int'对象不可迭代

我也尝试了这个但是没有用

sum (p_t[i, j] for i in range(num_products) for j in range(num_products))

2 个答案:

答案 0 :(得分:1)

sum(p_t[i][j] for i in range(len(p_t)) for j in range(len(p_t[i])))

答案 1 :(得分:0)

import numpy as np
from itertools import product

a =[[1,2,3],[4,5,6],[3,3,3]]
p_t = np.array(a)
num_products = 3

rslt1 = sum (p_t[i, j] for i,j in product(range(num_products), repeat=2))

rslt2= sum (p_t[i, j] for i in range(num_products) for j in range(num_products))

<强>输出:

rslt1
Out[79]: 30

rslt2
Out[80]: 30

首次尝试时,您实际上可以使用itertools.product

对于你的第二次尝试,实际上,你的sum (p_t[i, j] for i in range(num_products) for j in range(num_products))在我这边工作。

一般来说,当涉及到两个列表

的产品时,两个以下是等价的
In [88]: [(i,j) for i in range(2) for j in range(3)]
Out[88]: [(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2)]

In [89]: [x for x in product(range(2), range(3))]
Out[89]: [(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2)]