Skip to main content
 首页 » 编程设计

Python:逐个元素对数组求和

2025年05月04日14emanlee

我有 5 个模型的一些概率输出,我将概率逐个元素相加,如下所示:

probs = [None] * 5 
 
for i in range(0,5): 
  probs[i] = models[i].predict_proba(X) 
 
probs[0] + probs[1] + probs[2] + probs[3] + probs[4] 

这很好用。

然后我尝试通过执行以下操作来稍微简化上面的代码:

probs = [None] * 5 
results = [None] 
 
for i in range(0,5): 
  probs[i] = models[i].predict_proba(X) 
  results += probs[i] 
 
results 

但是出现如下错误:

TypeError unsupported operand type(s) for +: 'NoneType' and 'float'  
TypeErrorTraceback (most recent call last) 
<ipython-input-20-8d4d443a7428> in <module>() 
      4 for i in range(0,5): 
      5   probs[i] = models[i].predict_proba(X) 
----> 6   results += probs[i] 
      7  
      8 results 
 
TypeError: unsupported operand type(s) for +: 'NoneType' and 'float' 

我该如何修复此类错误?谢谢。

Note:  
 
probs[i] is of format: 
 
array([[  9.99877759e-01,   1.22241455e-04], 
       [  9.99694005e-01,   3.05994629e-04], 
       [  9.47546608e-01,   5.24533925e-02], 
       [  1.83994998e-01,   8.16005002e-01], 
       [  9.66928729e-01,   3.30712706e-02], 
       [  9.99487283e-01,   5.12717255e-04], 
       [  2.85824823e-03,   9.97141752e-01], 
       [  9.97979081e-01,   2.02091861e-03], 
       [  9.99744813e-01,   2.55186665e-04]]) 

请您参考如下方法:

您的问题是您正在尝试将 float 添加到 None。您可以使用列表推导式极大地简化您的代码:

probs = [models[i].predict_proba(X) for i in range(5)] 

然后求和,只需sum(probs)