如何用NumPy计算元组数组的均值并无需循环返回两个结果?
解决numpy数组按维度计算均值的问题
嘿,这个问题我之前也踩过坑!你现在得到的2.0是因为np.average默认会把整个数组扁平化后计算全局均值,咱们只需要指定axis参数,就能分别计算每个维度的均值,完全不用循环~
具体解决方案
首先把你的列表转成numpy数组(因为原数据是列表嵌套元组,numpy需要统一的数组格式),然后通过axis=0参数指定按列计算均值:
import numpy as np sample_array = [(1,3),(2,2),(3,1)] # 先转换为numpy数组 np_array = np.array(sample_array) # 指定axis=0,计算每一列的均值 mean_result = np.average(np_array, axis=0) print(mean_result) # 输出: [2. 2.]
补充说明
axis=0的作用是沿着行的方向(第一个轴),对每一列的元素求均值,正好对应你想要的两个结果值。- 如果需要整数类型的结果,可以用
astype()转换:mean_result.astype(int),会得到array([2, 2])。 - 另外
np.mean()也能实现同样的效果,用法一致:np.mean(np_array, axis=0),结果和np.average相同。
内容的提问来源于stack exchange,提问作者slimboy
相关产品推荐
相关产品推荐

