python_numpy활용

ssancho·2024년 5월 9일

python

목록 보기
26/26

1. 남아, 여아 출생 평균을 구하시오

샘플

열 기준 평균 (axis=0)

mean_axis_0 = np.mean(my_list, axis=0)

행 기준 평균 (axis=1)

mean_axis_1 = np.mean(my_list, axis=1)

print("=== 1. 남아, 여아 출생 평균")
birth = np.array(li)
rs = birth.mean(axis=0) # 열기준평균

#axis=0 => 각 열의 값들에 대해서 평균을 계산
#axis=1 => 각 행의 값들에 대해서 평균을 계산

print(rs[1:3])

print("남아 출생 평균 : {}".format(int(rs[1])))
print("여아 출생 평균 : {}".format(int(rs[2])))

2. 남아 출생이 가장 많은 연도와 남아의 수를 구하시오

샘플

result = [[1,2,3,4,5],[5,6,7,8,9]]

print(max(r[0] for r in result)) # 5 : 1번열에서의 최대값

print(min(r[1] for r in result)) # 2 : 2번열에서의 최소값

print("=== 2. 남아 출생이 가장 많은 연도와 남아의 수")

boys = birth[:,1] #남아
#print(boys)

max_v = boys.max() # boys 배열에 가장 큰 값을 찾아서 max_v 저장. 남아 출생 수 중에서 최대 값
print("남아 출생 최대값 : {}".format(max_v))

idx = boys == max_v
#print(idx)

boys 배열에서 각 요소가 max_v와 같은지 비교 boolean 배열 idx

True

rs = birth[idx]

idx 사용해서 birth 배열의 필터링해서 최대 남아 출생 수를 갖는 연도의 데이터를 rs에 저장.

#print(rs)

print(rs[::,:2])

rs 배열에서 모든 행의 첫번 째 열과 두번 째 열

3. 2000년 이후 데이터

print("=== 3. 2000년 이후 데이터")
#print(birth[:,0] >= 2000)

birth 배열의 모든 행에서 첫 번째 열의 값이 2000 이상인지를 확인

print(birth[birth[:,0] >= 2000])

boolean 배열을 사용해서 birth 배열을 필터링

조건을 만족하는 행들만 선택해서 새로운 배열을 생성한다. 연도가 2000년 이상인 데이터만 포함하는 배열이 생성된다.

4. 1800년대, 1900년대, 2000년대 각 남아 여아 수의 평균을 구하시오.

print("=== 4. 1800년대, 1900년대, 2000년대 각 남아 여아 수의 평균")

#print(birth[:,0] < 1900)
cen1800 = birth[birth[:,0] < 1900]

birth 배열에서 연도가 1900년대 미만인 데이터를 cen1800 저장.

#print(birth[:,0] >= 1900)
cen1900_a = birth[birth[:,0] >= 1900]

birth 배열에서 연도가 1900년대 이상인 데이터를 cen1900_a 저장.

cen1900_b = cen1900_a[cen1900_a[:,0] < 2000]

cen1900_a 배열에서 연도가 1900년대이상 2000년대 미만인 데이터를 cen1900_b 저장

cen2000 = birth[birth[:,0] >= 2000]

birth 배열에서 연도가 2000년대 이상인 데이터를 cen2000 저장.

avg_1800 = cen1800.mean(axis=0)[1:3]

cen1800 배열의 남아 출생 수와 여아 출생 수에 대해 평균을 계산

avg_1900 = cen1900_b.mean(axis=0)[1:3]

avg_2000 = cen2000.mean(axis=0)[1:3]

print("1800년대 남아 평균 : {}".format(int(avg_1800[0])))
print("1800년대 여아 평균 : {}".format(int(avg_1800[1])))
print("1900년대 남아 평균 : {}".format(int(avg_1900[0])))
print("1900년대 여아 평균 : {}".format(int(avg_1900[1])))
print("2000년대 남아 평균 : {}".format(int(avg_2000[0])))
print("2000년대 여아 평균 : {}".format(int(avg_2000[1])))

profile
Ssancho

0개의 댓글