为何np.mean仅输出单个值,无法返回每行每列对应均值?NumPy问题
问题根因
np.mean()的axis参数仅对对应维度存在的数组生效,你的代码中存在一个典型的NumPy使用误区:
- 初始读入的
numpy_list和numpy_list2转换为NumPy数组后,都是长度为9的一维数组,两者相加得到的added仍然是shape为(9,)的一维数组 - 你仅在打印
added时临时调用了.reshape(3,3),但NumPy的reshape操作默认不会原地修改数组结构,也没有把变形后的结果重新赋值给变量,后续计算均值时传入的还是一维的added - 对一维数组指定行列维度参数时,NumPy无法识别按行列计算的逻辑,会直接返回整个数组的全局均值,也就是你看到的单个数值结果。
修正方案
调整加法分支的逻辑,在运算后先把相加结果显式变形为3*3二维矩阵,再执行后续所有操作,不需要重复调用reshape。修正后的代码片段如下:
if selection == 1: # 相加后直接转成3*3二维数组并赋值 added = (numpy_list + numpy_list2).reshape(3, 3) print(added) print("\n") # 转置操作针对二维数组直接生效,无需重复reshape print("This is the transpose: \n", np.transpose(added)) print("\n") # 此时数组为二维结构,axis参数可以正确按维度计算均值 added_col_ave = np.mean(added, axis=0) print("The average of the columns is:", added_col_ave) added_row_ave = np.mean(added, axis=1) print("The average of the rows is:", added_row_ave)
补充提示:如果需要reshape操作原地生效,可以用
added.shape = (3,3)的写法直接修改数组的shape属性,不需要重新赋值,但更推荐显式返回新数组赋值的写法,逻辑更清晰。
内容的提问来源于stack exchange,提问作者Jake Scanlan
相关产品推荐
相关产品推荐

