python利用numpy成绩进行处理

python利用numpy成绩进行处理

# 学生成绩
# 构造成绩
# 成绩统计
# 学生成绩模拟50个同学的语文,数学,英语三课的成绩,存储在numpy,使用学生的编号["01","02",......,"50"]
import numpy as np


def crateGrades():
    G = np.zeros((50, 5))
    G[:, 0] = np.arange(50)
    G[:, 1] = np.floor(np.random.normal(70, 10, 50))
    G[:, 2] = np.floor(np.floor(np.random.normal(80, 10, 50)))
    G[:, 3] = np.floor(np.random.normal(70, 10, 50))
    for j in range(3):
        G[G[:, j] > 100, j] = 100
        G[G[:, j] < 0, j] = 0
    G[:, 4] = G[:, 1] + G[:, 2] + G[:, 3]
    return G

def minmaxGrades(G):
    for j in range(0, 5):
        max = G[:, j].max()
        min = G[:, j].min()
        print("mark", j, "max")
        print(G[G[:, j] == max, :])
        print("mark", j, "min")
        print(G[G[:, j] == min, :])
        print()

def sort(G, column=1):
    # 整行排序argsort,默认对按照第二列进行排序
    index = np.argsort(G[:, column])
    print(G[index, :])
    print()

def ave(G):
    # 计算平均值,对每一列进行计算
    print(G[:, 1:].mean(axis=0))

# 哪些人在平均分之上,那些人在平均分之下:
def count(G):
    print()
    # 那些人在第二列的平均分之上
    print(G[G[:, 1] > G[:, 1].mean(axis=0), :])
    print()
    # 那些人在第三列的平均分之上
    print(G[G[:, 2] > G[:, 2].mean(axis=0), :])
    print()
    # 那些人在第四列的平均分之上
    print(G[G[:, 3] > G[:, 3].mean(axis=0), :])
    print()
    # 那些人在总分的平均分之上
    print(G[G[:, 4] > G[:, 4].mean(axis=0), :])

# 统计成绩在某个范围内
def countrange(column, a, b):
    print()
    r = (G[:, column] >= a) & (G[:, column] < b)
    s = G[r, :]
    print(s)
    print(r.sum())


if __name__=="__main__":
    G = crateGrades()
    # print(G)
    minmaxGrades(G)
    # 对总分进行排序
    sort(G, 4)
    # 计算平均值
    ave(G)
    # 哪些人在平均分之上,那些人在平均分之下
    count(G)
    # 统计成绩在某个范围内,例如第二列中成绩在60-70之间的及人数
    countrange(1, 60, 70)

你可能感兴趣的:(python爬虫,numpy,python,开发语言)