按元素列表python求元素

时间:2013-08-06 11:44:59

标签: python list for-loop nested sum

我遇到以下任务的一些问题:

我有一份清单清单。

我将“weighted_prob”称为列表列表,其中“weighted_prob”的每个元素称为“weighted_variable”。

weighted_prob中有32个元素,每个元素都是100个浮点数的列表。

这就是它的样子:

 for i in arange(0,2):
      print weighted_prob[i]

outcome:
   [  1.56147373e-02   2.04783441e-03   2.60245622e-03   2.34647692e-03
   1.96250797e-03   2.60245622e-03   1.45054937e-03   1.74919189e-03
   2.00517119e-03   2.04783441e-03   1.62120224e-03   1.87718154e-03
   1.96250797e-03   2.34647692e-03   2.00517119e-03   1.57853902e-03
   1.74919189e-03   2.21848727e-03   1.53587580e-03   1.36522294e-03
   1.19457007e-03   1.32255972e-03   1.10924364e-03   9.38590770e-04
   7.25274686e-04   8.95927553e-04   6.39948252e-04   9.81253986e-04
   8.53264336e-04   3.41305734e-04   5.97285035e-04   5.11958602e-04
   6.39948252e-04   5.11958602e-04   4.69295385e-04   2.98642518e-04
   2.13316084e-04   2.13316084e-04   3.41305734e-04   3.83968951e-04
   2.98642518e-04   1.70652867e-04   2.98642518e-04   1.27989650e-04
   1.70652867e-04   1.27989650e-04   2.55979301e-04   1.27989650e-04
   8.53264336e-05   1.27989650e-04   4.26632168e-05   1.27989650e-04
   4.26632168e-05   4.26632168e-05   0.00000000e+00   0.00000000e+00
   1.27989650e-04   0.00000000e+00   0.00000000e+00   0.00000000e+00
   4.26632168e-05   0.00000000e+00   4.26632168e-05   0.00000000e+00
   0.00000000e+00   0.00000000e+00   4.26632168e-05   4.26632168e-05
   0.00000000e+00   4.26632168e-05   0.00000000e+00   0.00000000e+00
   0.00000000e+00   0.00000000e+00   0.00000000e+00   0.00000000e+00
   0.00000000e+00   0.00000000e+00   0.00000000e+00   0.00000000e+00
   0.00000000e+00   0.00000000e+00   0.00000000e+00   0.00000000e+00
   0.00000000e+00   0.00000000e+00   0.00000000e+00   0.00000000e+00
   0.00000000e+00   0.00000000e+00   0.00000000e+00   0.00000000e+00
   0.00000000e+00   0.00000000e+00   0.00000000e+00   0.00000000e+00
   0.00000000e+00   0.00000000e+00   0.00000000e+00]  
 [  1.53587591e-02   1.87718167e-03   2.17582421e-03   2.13316099e-03
   2.77310929e-03   2.47446675e-03   2.34647709e-03   2.00517133e-03
   1.96250811e-03   2.17582421e-03   2.73044607e-03   2.68778285e-03
   1.74919201e-03   2.34647709e-03   2.85843573e-03   1.91984489e-03
   2.38914031e-03   2.64511963e-03   1.79185523e-03   1.91984489e-03
   1.74919201e-03   1.32255981e-03   1.66386557e-03   1.57853913e-03
   8.10601177e-04   1.27989659e-03   8.95927616e-04   8.95927616e-04
   8.53264397e-04   8.53264397e-04   5.97285078e-04   6.39948297e-04
   6.39948297e-04   6.39948297e-04   5.97285078e-04   4.26632198e-04
   5.54621858e-04   3.83968978e-04   3.41305759e-04   1.70652879e-04
   4.26632198e-04   1.70652879e-04   2.55979319e-04   5.11958638e-04
   2.98642539e-04   8.53264397e-05   2.55979319e-04   8.53264397e-05
   1.70652879e-04   0.00000000e+00   4.26632198e-05   8.53264397e-05
   4.26632198e-05   1.27989659e-04   4.26632198e-05   4.26632198e-05
   4.26632198e-05   8.53264397e-05   8.53264397e-05   4.26632198e-05
   4.26632198e-05   4.26632198e-05   4.26632198e-05   0.00000000e+00
   4.26632198e-05   4.26632198e-05   4.26632198e-05   0.00000000e+00
   0.00000000e+00   4.26632198e-05   0.00000000e+00   0.00000000e+00
   0.00000000e+00   0.00000000e+00   0.00000000e+00   0.00000000e+00
   0.00000000e+00   0.00000000e+00   0.00000000e+00   0.00000000e+00
   0.00000000e+00   0.00000000e+00   0.00000000e+00   0.00000000e+00
   0.00000000e+00   0.00000000e+00   0.00000000e+00   0.00000000e+00
   0.00000000e+00   0.00000000e+00   0.00000000e+00   0.00000000e+00
   0.00000000e+00   0.00000000e+00   0.00000000e+00   0.00000000e+00
   0.00000000e+00   0.00000000e+00   0.00000000e+00]

我想把每个weighted_variable的所有第i个元素加起来。

换句话说,我想说,在weighted_prob中每个列表的第0个元素(因此获得32个变量),得到变量之和,将此总和存储在数组中。对于所有32个“weighted_variables”,这必须应用于每个weighted_variable的所有100个元素。

这是我的尝试:

 add_prob = []    

 for weighted_variable in weighted_prob:
     for i in range(len(weighted_variable)-1):
         sum_per_bin = []
         sum_per_bin.append(partitioning[i])
          dummy = sum(sum_per_bin)

     add_prob.append(dummy)

但命令

 print add_prob 

给出了32个零的列表,我很肯定这是错误的。

有人可以帮帮我吗?例如,也许有一种更好的方法可以做到这一点,没有嵌套的for循环?

非常感谢

布莱斯

2 个答案:

答案 0 :(得分:2)

你在使用Numpy吗?

如果你是,我想你只想要np.sum(weighted_prob, axis=0)

答案 1 :(得分:1)

sum_per_bin = []

嵌套中的此语句每次都为变量分配一个新列表。所以你的假人只会是最后一个项目。

获得你想要的东西:

[sum(x) for x in zip(*weighted_prob)]