You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python 3.7实现CBA公式遇TypeError,求eq变量正确求和方法

解决TypeError: 'numpy.float64' object is not iterable错误

问题根源:每次循环生成的eq是单个numpy.float64数值,但Python的sum()函数要求传入可迭代对象(比如列表、数组),直接对单个数值调用sum()就会触发这个错误。

修正方法一:列表收集后求和

先把每次循环得到的eq存入列表,循环结束后再对列表整体求和:

import numpy as np

##CBA
cm=np.array([[20,0,0],[1,14,0],[0,0,13]])
print(cm)

eq_list = []
for i in range(3):
    a = cm[i,i]
    sum1 = cm[i,0]+cm[i,1]+cm[i,2]
    sum2 = cm[0,i] + cm[1,i] + cm[2,i]
    eq = ((a / max(sum1,sum2))/3)
    eq_list.append(eq)

add = sum(eq_list)
print(add)

修正方法二:numpy向量化运算(更高效)

利用numpy的数组操作替代循环,代码更简洁且性能更好:

import numpy as np

cm=np.array([[20,0,0],[1,14,0],[0,0,13]])
print(cm)

# 提取混淆矩阵对角线元素
diag_vals = np.diag(cm)
# 计算每行的总和
row_totals = np.sum(cm, axis=1)
# 计算每列的总和
col_totals = np.sum(cm, axis=0)
# 取每行/列总和的最大值
max_totals = np.maximum(row_totals, col_totals)
# 计算所有eq值的总和
total = np.sum((diag_vals / max_totals) / 3)
print(total)

内容的提问来源于stack exchange,提问作者matth

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 16:32:17