有人可以帮我解决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))
答案 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)]