Numpy求平均触发ufunc 'divide'错误,求问题排查与解决
问题分析与解决方法
问题根源
你当前的代码存在逻辑错误:
- 你创建的
fuel_typesx、fuel_typesz等数组,存储的是燃料类型的字符串值(比如重复的'X'、'Z'),而np.average()只能对数值类型数据计算平均值,字符串无法进行除法运算,因此触发了类型不兼容的报错。 - 你的需求是计算不同燃料类型对应的平均油耗,但你错误地对燃料类型本身求平均,而非对应燃料类型的油耗数据。
修正后的代码
通过布尔索引筛选对应燃料类型的油耗数据,再计算平均值:
import numpy as np import pandas as pd cars = pd.read_csv('data/co2_emissions_canada.csv') cars_fuel_types = cars['Fuel Type'].to_numpy() cars_fuel_consumption = cars['Fuel Consumption Comb (L/100 km)'].to_numpy() # 计算普通汽油(X)的平均油耗 fuel_x_consumption = cars_fuel_consumption[cars_fuel_types == 'X'] print(np.average(fuel_x_consumption)) # 计算 premium gasoline(Z)的平均油耗 fuel_z_consumption = cars_fuel_consumption[cars_fuel_types == 'Z'] print(np.average(fuel_z_consumption)) # 计算乙醇(E)的平均油耗 fuel_e_consumption = cars_fuel_consumption[cars_fuel_types == 'E'] print(np.average(fuel_e_consumption)) # 计算柴油(D)的平均油耗 fuel_d_consumption = cars_fuel_consumption[cars_fuel_types == 'D'] print(np.average(fuel_d_consumption))
更简洁的Pandas分组实现
既然已经使用Pandas,直接用分组功能可以更高效完成需求,无需手动处理Numpy数组:
import pandas as pd cars = pd.read_csv('data/co2_emissions_canada.csv') # 按燃料类型分组,计算每组的平均油耗 fuel_avg_result = cars.groupby('Fuel Type')['Fuel Consumption Comb (L/100 km)'].mean() print(fuel_avg_result)
内容的提问来源于stack exchange,提问作者Ayodeji Nicholas
相关产品推荐
相关产品推荐

