python - 计算范围内每一行之间的平均值
问题描述
我有一个大小为 700x20 的数据框。我的数据是图像上特定位置的像素强度坐标,我有 14 个人,每个人有 50 张图像。我正在尝试执行降维,对于这样的任务,其中一个步骤需要我计算每个类之间的平均值,其中我有两个类。在我的数据框中,每 50 行是属于一个类的特征,因此 A 类有 0 到 50 个特征,B 类有 51 到 100 个特征,A 类有 101-150 个,类有 151-200 个乙等。
我想要做的是计算每个给定行的平均值,从 N 到 M 并计算平均值。这是数据框的链接,以便更好地可视化问题:Dataframe pickle file
我尝试的是对数据框进行排序并单独计算,但它不起作用,它计算了每一行的平均值并将它们分组为 14 个不同的类。
class_feature_means = pd.DataFrame(columns=target_names)
for c, rows in df.groupby('class'):
class_feature_means[c] = rows.mean()
class_feature_means
最小的可重现示例:
my_array = np.asarray([[31, 25, 17, 62],
[31, 26, 19, 59,],
[31, 23, 17, 67,],
[31, 23, 19, 67,],
[31, 28, 17, 65,],
[32, 26, 19, 62,],
[32, 26, 17, 66,],
[30, 24, 17, 68],
[29, 24, 17, 68],
[33, 24, 17, 68],
[32, 52, 16, 68],
[29, 24, 17, 68],
[33, 24, 17, 68],
[32, 52, 16, 68],
[29, 24, 17, 68],
[33, 24, 17, 68],
[32, 52, 16, 68],
[30, 25, 16, 97]])
my_array = my_array.reshape(18, 4)
my_array = my_array.reshape(18, 4)
indices = sorted(list(range(0,int(my_array.shape[0]/3)))*3)
class_dict = dict(zip(range(0,int((my_array.shape[0]/3))), string.ascii_uppercase))
target_names = ["Index_" + c for c in class_dict.values()]
pixel_index = [1, 2, 3, 4]
X = pd.DataFrame(my_array, columns= pixel_index)
y = pd.Categorical.from_codes(indices,target_names)
df = X.join(pd.Series(y,name='class'))
df
基本上我想要做的是分组到一个独特的A,C,E类,将它们的总和除以3,因此达到A类的平均值或者我们称之为0类。然后,组合成一个独特的B,D类, F 将它们的和除以 3,因此达到 B 类或 1 类的平均值。
解决方案
为组创建具有整数除法和模数的辅助数组,并传递给 groupby 以进行聚合sum
,最后除法:
N = 3
arr = np.arange(len(df)) // N % 2
print (arr)
[0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1]
df = df.groupby(arr).sum() / N
print (df)
1 2 3 4
0 92.666667 82.666667 51.333333 198.000000
1 94.333333 92.666667 51.333333 210.333333
推荐阅读
- python - 以更有效的方式访问 3D 矩阵的所有奇数索引
- azure - Azure Active Directory 非管理员用户访问 Azure SQL 数据库
- c# - Json 反序列化失败
- python - 最后一个子图中缺少标题
- c - 如何逐条执行反汇编的ELF指令?
- oracle - 更新语句错误 - 删除任何非确定性 where 子句并重新发出 dml
- python - 打开 file.txt 并使用 argparse 存储到变量中
- python - 在 Flask 中验证复杂对象
- amazon-web-services - AWS - 异常数据传出
- javascript - Javascript 每个函数仅适用于最后一个元素