numpy.average报错TypeError: ufunc 'true_divide'问题求助
解决numpy.average触发的TypeError问题
报错根源
你传入np.average的是pandas DataFrame对象,numpy的average函数对多维DataFrame的类型适配性较差,即便之前能正常运行,也可能因数据加载的细微变化(如某行数据类型异常)触发类型错误。
解决方案
方案1:使用pandas内置mean方法(推荐)
pandas对自身的DataFrame/Series类型支持更完善,无需转换为numpy数组即可直接计算:
import numpy as np import pandas as pd url = 'https://raw.githubusercontent.com/m23chaffee/DS100-Repository/main/Aluminum%20Alloy%20Data%20Set.csv' data = pd.read_csv(url, index_col=0, parse_dates=[0]) # 提取为一维Series(单括号)而非二维DataFrame(双括号) elastic = data['m_elastic'] # 过滤空值 elastic = elastic.dropna() # 保存排序结果(原代码未赋值,排序不会生效) elastic = elastic.sort_values() # 用pandas自带mean计算平均值 avg = elastic.mean() print("The mean of the aluminum alloy is", avg)
方案2:转为numpy一维数组后计算
若坚持使用numpy,需将DataFrame转为一维数组:
# 基于原代码的elastic(DataFrame)转为一维数组 elastic_array = elastic.values.flatten() avg = np.average(elastic_array) print("The mean of the aluminum alloy is", avg)
额外注意点
原代码中elastic.sort_values(['m_elastic'])未将排序结果赋值给变量,排序操作不会生效,需补充赋值:elastic = elastic.sort_values(['m_elastic'])
内容的提问来源于stack exchange,提问作者Lynman Alpha
相关产品推荐
相关产品推荐

