2

我在执行以下任务时遇到了一些问题:

我有一个列表列表。

我将“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中每个列表的第零个元素(因此获得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 循环?

非常感谢

布莱斯

4

2 回答 2

4

你在用 Numpy 吗?

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

于 2013-08-06T11:49:09.227 回答
1
sum_per_bin = []

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

要得到你想要的:

[sum(x) for x in zip(*weighted_prob)]
于 2013-08-06T11:47:50.840 回答