基于其他两列(分组)的唯一元素的一列的Numpy平均值

2024-05-15 03:21:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我有3个这样的Numpy数组:

Name Subject Marks

A    Math     89
B    Chem     43
A    Math     98
B    Math     23
A    Chem     57
B    Math     78
B    Math     82
A    Chem     71
A    Math     36
C    Math     89

我想做的是根据第一列和第二列得到每个不同情况的平均值, 即:A数学,A化学,B数学,B化学,C数学类似于sql:avg(marks)组(按名称和主题)

我尝试了很多,但都没有成功,如何做到这一点只使用Numpy(任何函数可以使用),而不使用熊猫


Tags: namenumpy名称sql情况数学math数组
1条回答
网友
1楼 · 发布于 2024-05-15 03:21:32
import numpy as np
name=np.array(['A','B','A','B','A','B','B','A','A','C'])
subject=np.array(['Math','Chem','Math','Math','Chem','Math','Math','Chem','Math','Math'])
marks=np.array([89,43,98,23,57,78,82,71,36,89])
name_un=np.unique(name)
subj_un=np.unique(subject)
for nm in name_un:
    for subj in subj_un:
        arr=np.array([(True if x==nm and y==subj else False) for x,y in zip(name,subject)])
        if arr.any():
            print(nm,subj,np.mean(marks[arr]))

相关问题 更多 >

    热门问题