Analysis

[데이터마이닝] Numpy-학생 SAMPLE upload- Lab2 과제

ialleejy 2024. 12. 5. 06:43

 

 

import numpy as np

def Math_score(score_array):  ##문제1
    math_score_array = score_array[:, 2]  #모든 행(학생)의 세 번째 열(수학 점수) 추출

    for i, score in enumerate(math_score_array):
        print(f"학생{i+1}: {score}")
        
def Total_score(score_array):  ##문제2
    total_score_array = np.sum(score_array, axis=1)  #각 행(학생)별로 모든 열의 값(과목 점수) 더하기

    for i, score in enumerate(total_score_array):
        print(f"학생{i+1}: {score}")
        
def Odd_students_score(score_array):  ##문제3
    odd_students = np.arange(score_array.shape[0]) %2==0  #인덱스가 0,2,4,6,8로 짝수인 행(즉, 홀수번째 학생)만 True로 선택
    odd_students_score_array = score_array[odd_students]  #홀수번째 학생들의 점수 추출
    odd_students_score_array_reversed = odd_students_score_array[:, ::-1]  #모든 행을 선택하고, 각 행의 열을 역순으로 저장

    for i, score in enumerate(odd_students_score_array_reversed):
        print(f"학생{i*2+1}: {score}")
        
def Max_score(score_array, subject_array):  ##문제4  #매개변수 2개 받음
    max_score_array = np.max(score_array, axis=0)  #각 열(과목)별로 최대값 저장

    for i in range(len(subject_array)):
        print(f"{subject_array[i]}: {max_score_array[i]}")
        
def Below90_eng_score(score_array):  ##문제5
    for i in range(score_array.shape[0]):  #모든 행(학생)에 대해 반복
        if score_array[i, 1]<90:  #각 행(학생)의 두 번째 열(영어 점수)이 90 미만인 경우
            print(f"학생{i+1}: {score_array[i]}")
            
def Avg_score(score_array, subject_array):  ##문제6  #매개변수 2개 받음
    avg_score_array = np.mean(score_array, axis=0)  #각 열(과목)별로 평균값 저장

    for i in range(len(subject_array)):
        print(f"{subject_array[i]}: {avg_score_array[i]}")

        
def main():
    np.random.seed(52)
    score_array = np.random.randint(1, 101, size=(10,4))  #1부터 100까지의 랜덤 정수 값 10*4

    subject_array = ['국어', '영어', '수학', '과학']

    print("\n <문제1> 모든 학생의 수학 점수")
    Math_score(score_array)

    print("\n <문제2> 각 학생의 전과목 총합 점수")
    Total_score(score_array)

    print("\n <문제3> 홀수번째 학생들의 점수 (과학, 수학, 영어, 국어 순)")
    Odd_students_score(score_array)

    print("\n <문제4> 각 과목에서의 최대 점수")
    Max_score(score_array, subject_array)

    print("\n <문제5> 영어 과목이 90점 미만인 학생들의 점수 (국어, 영어, 수학, 과학 순)")
    Below90_eng_score(score_array)

    print("\n <문제6> 각 과목의 평균 점수")
    Avg_score(score_array, subject_array)


main()
 <문제1> 모든 학생의 수학 점수
학생1: 14
학생2: 33
학생3: 36
학생4: 34
학생5: 55
학생6: 46
학생7: 64
학생8: 40
학생9: 35
학생10: 75

 <문제2> 각 학생의 전과목 총합 점수
학생1: 79
학생2: 219
학생3: 240
학생4: 238
학생5: 131
학생6: 231
학생7: 236
학생8: 143
학생9: 164
학생10: 304

 <문제3> 홀수번째 학생들의 점수 (과학, 수학, 영어, 국어 순)
학생1: [24 14 12 29]
학생3: [100  36  92  12]
학생5: [47 55 12 17]
학생7: [40 64 77 55]
학생9: [44 35 21 64]

 <문제4> 각 과목에서의 최대 점수
국어: 98
영어: 100
수학: 75
과학: 100

 <문제5> 영어 과목이 90점 미만인 학생들의 점수 (국어, 영어, 수학, 과학 순)
학생1: [29 12 14 24]
학생2: [87 29 33 70]
학생5: [17 12 55 47]
학생6: [43 62 46 80]
학생7: [55 77 64 40]
학생8: [23 72 40  8]
학생9: [64 21 35 44]
학생10: [79 85 75 65]

 <문제6> 각 과목의 평균 점수
국어: 50.7
영어: 56.2
수학: 43.2
과학: 48.4