Python

numpy 실습

learning-log22 2025. 5. 1. 14:16
문제 1 : 여행 경비 통계 분석하기
5명의 여행 지출 내역이 아래 배열로 주어집니다. 각 열은 [식비, 숙박비, 교통비, 기타] 항목입니다.

 import numpy as np
expenses = np.array([
    [120, 300, 150, 90],
    [100, 250, 160, 90],
    [130, 310, 140, 70],
    [90, 280, 130, 60],
    [110, 270, 170, 100]
])
1-1. 가장 많은 총 비용을 지출한 사람의 인덱스를 구하라.
total = expenses.sum(axis=1)
print(total)
most_spent_index = np.argmax(total)
print("1-1. 가장 많이 지출한 사람 인덱스:", most_spent_index)
 [660 600 650 560 650]
1-1. 가장 많이 지출한 사람 인덱스: 0

1-2. 식비에 비해 기타 비용이 두 배 이상 높은 사람의 수를 구하라.
condition = expenses[:, 3] >= 2 * expenses[:, 0]
count = np.sum(condition)
print("1-2. 기타비용이 식비의 두 배 이상인 사람 수:", count)
 1-2. 기타비용이 식비의 두 배 이상인 사람 수: 0
 
1-3. 각 항목별 평균 지출 비용을 정수로 출력하라.
mean_per_category =  expenses.mean(axis=0).astype(int)
print("1-3. 항목별 평균 지출:", mean_per_category)
 1-3. 항목별 평균 지출: [110 282 150  82]
문제 2 : 영화 평점 분포 분석
학생 10명이 본 영화 5편에 대해 평점을 남겼습니다. 0은 해당 영화를 보지 않았음을 의미합니다.
 
ratings = np.array([    
[5, 4, 0, 3, 0],   
[4, 0, 2, 3, 4],    
[0, 5, 3, 0, 2],    
[2, 0, 4, 3, 5],    
[3, 4, 5, 2, 0],    
[0, 0, 0, 4, 4],    
[5, 5, 5, 0, 0],    
[3, 3, 0, 3, 3],    
[0, 2, 4, 0, 5],    
[4, 0, 3, 4, 0]])

2-1. 모든 학생이 본 영화는 몇 편인가?
watched = ratings > 0
watched_count = np.sum(watched, axis=0)
everyone_watched = np.sum(watched_count == 10)
print("2-1. 모든 학생이 본 영화 수:", everyone_watched)
 2-1. 모든 학생이 본 영화 수: 0
 
2-2. 평균 평점이 3.5 이상인 영화의 인덱스를 구하라.
mean_ratings = ratings.sum(axis=0) / np.count_nonzero(ratings, axis=0)
high_rated_indices = np.where(mean_ratings >= 3.5)[0]
print("2-2. 평균 평점 3.5 이상 영화 인덱스:", high_rated_indices)
 2-2. 평균 평점 3.5 이상 영화 인덱스: [0 1 2 4]
 
2-3. 3점 이하의 평점을 받은 횟수가 가장 많은 영화의 인덱스를 구하라.
low_scores = (ratings > 0) & (ratings <= 3)
low_scores_count =  np.sum(low_scores, axis=0)
most_low_index = np.argmax(low_scores_count)
print("2-3. 3점 이하 평점 가장 많은 영화 인덱스:", most_low_index)
 2-3. 3점 이하 평점 가장 많은 영화 인덱스: 3
문제 3 : 배열 퍼즐 - 1차원 퍼즐 맞추기
 
# 다음과 같은 배열이 선언되었다.
arr = np.array([0, 2, 0, 4, 0, 6, 0, 8, 0, 10])
3-1. 짝수 인덱스 값 1로 바꾸기
arr[::2] = 1print("3-1. 수정된 배열:", arr)
 3-1. 수정된 배열: [ 1  2  1  4  1  6  1  8  1 10]
 
3-2. 홀수 인덱스 평균 이상인 값 개수
odd_vals = arr[1::2]
avg = np.mean(odd_vals)count = np.sum(odd_vals >= avg)
print("3-2. 평균 이상인 홀수 인덱스 값 개수:", count)
 3-2. 평균 이상인 홀수 인덱스 값 개수: 3
 
3-3. 가장 많이 등장한 값
unique, counts = np.unique(arr, return_counts=True)
most_common = unique[np.argmax(counts)]
print("3-3. 가장 많이 등장한 값:", most_common)
 3-3. 가장 많이 등장한 값: 1
LIST

'Python' 카테고리의 다른 글

Python 기초 개념 정리  (0) 2025.05.01
Pandas 실습  (3) 2025.05.01
matplotlib 실습  (0) 2025.05.01
감성분석 이론  (0) 2025.05.01
크롤링  (2) 2025.04.26