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

使用NumPy计算学生平均分报错:ufunc 'add'无匹配类型循环

问题分析与解决方法

错误原因

你遇到的_UFuncNoLoopError是因为提取的numeric_columns是NumPy结构化数组,而非普通的同质多维数组。结构化数组的每个元素是包含多个数值的复合类型元组,np.nanmean的axis=1参数无法识别这种结构的维度,导致求和操作找不到匹配的类型签名,从而报错。

解决方法

只需要将结构化的数值列转换为普通的二维float数组,即可正常使用np.nanmean计算行均值。有两种简洁的实现方式:

方式1:使用np.column_stack直接生成二维数组

修改提取数值列的代码,用np.column_stack将各数值字段组合成普通二维数组:

# Extract the numeric columns and convert to a 2D float array
numeric_columns = np.column_stack([data[field] for field in field_names if data[field].dtype == float])

# Calculate the average score for each student
average_scores = np.nanmean(numeric_columns, axis=1)

方式2:将结构化数组转换为同质数组

如果已经得到了结构化的numeric_columns,可以用view方法将其转换为二维float数组:

# Extract the numeric columns as structured array first
numeric_columns_struct = data[[field for field in field_names if data[field].dtype == float]]
# Convert to 2D float array
numeric_columns = numeric_columns_struct.view((float, len(numeric_columns_struct.dtype.names)))

# Calculate the average score for each student
average_scores = np.nanmean(numeric_columns, axis=1)

验证结果

运行修改后的代码,会输出每位学生的平均分(自动忽略缺失值):

[87.  88.75 81.4  89.75 89.6  92.5 ]

对应Alice到Frank的平均分,完全符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 03:32:43