NumPy调用np.mean计算元组均值触发AxisError错误问题排查
错误原因
触发报错的核心是传参位置错位,混淆了np.mean的参数定义:np.mean的核心位置参数顺序为np.mean(a, axis=None, dtype=None, ...):
- 第一个位置参数
a是待计算均值的数组/可迭代对象 - 第二个位置参数
axis是指定计算均值的轴方向
你写的np.mean(weeks[0][0], weeks[0][1])实际传入的是:
- 待计算对象
a = weeks[0][0],也就是整数1,对应0维的标量数组 - 轴参数
axis = weeks[0][1],也就是整数7
0维数组不存在编号为7的轴,因此直接抛出对应的轴越界错误。
修正方案
根据计算需求,选择对应写法即可:
- 计算单个元组的均值,直接把整个元组作为第一个参数传入:
# 计算第一个元组(1,7)的均值,返回结果4.0 np.mean(weeks[0])
- 如果需要单独传入两个元素计算,要先把两个元素打包成列表/元组这类可迭代对象,再作为第一个参数传入:
np.mean( (weeks[0][0], weeks[0][1]) ) # 或者写成列表形式 np.mean( [weeks[0][0], weeks[0][1]] )
- 如果需要批量计算所有周区间的均值,可以直接传入整个列表,指定按行计算即可:
# 按行计算每个元组的均值,返回 [ 4. 11. 18. 25. 32. 40.] np.mean(weeks, axis=1)
小提示:调用函数时如果对参数顺序不熟悉,建议显式写出参数名,比如
np.mean(a=xxx, axis=xxx),可以避免位置传参错位的低级错误。
内容的提问来源于stack exchange,提问作者pkpto39
相关产品推荐
相关产品推荐

