我正在尝试从数组列表中计算列的平均数。
f1_score = [array([0.807892 , 0.91698113, 0.73846154]),
array([0.80041797, 0.9056244 , 0.72017837]),
array([0.80541103, 0.91493384, 0.70282486])]
我也按如下所述进行尝试,但是我无法获得列的平均值。
output = []
for i in range(len(f1_score)):
output.append(np.mean(f1_score[i], axis = 0))
我得到行的平均值:
[0.8211115582302323, 0.8087402497928408, 0.8077232421210242]
但是我需要列的平均值:
array([0.8045736667, 0.9125131233, 0.7204882567])
预先感谢您的回答。
答案 0 :(得分:2)
您可以使用numpy的均值函数并将轴设置为0。
mean(f1_score, axis=0)
然后您将获得所需的答案
array([0.80457367, 0.91251312, 0.72048826])
答案 1 :(得分:1)
如果您不介意使用numpy,则可以执行以下操作
import numpy as np
arr = np.random.randint(0,10,size=(2,2)) #sample data
arr
#array([[0, 2],
# [6, 1]])
arr.mean(axis=0) #mean along the columns
# array([3. , 1.5])
arr.mean(axis=1) #mean along the rows
# array([1. , 3.5])
或者,您可以通过执行以下操作找到方法
arr = [[0,2], [6,1]]
col_means = [sum(i)/len(i) for i in zip(*arr)] #column wise means
# [3.0, 1.5]
row_means = [sum(i)/len(i) for i in arr] #row wise means
# [1.0, 3.5]
答案 2 :(得分:0)
尝试一下:
f1_score = [[0.807892 , 0.91698113, 0.73846154],[0.80041797, 0.9056244 ,0.72017837],[0.80541103, 0.91493384, 0.70282486]]
temp=[]
output = []
for i in range(len(f1_score)):
for j in range(len(f1_score)):
temp.append(f1_score[j][i])
output.append(np.mean(temp))
print(output)