반복문 없이 구하는 포켓몬 합계와 평균
세션에는 720마리 포켓몬의 목록 names가 로드되어 있고, 각 포켓몬의 통계는 NumPy 배열 stats로 로드되어 있습니다. stats의 각 행은 names의 포켓몬 하나에 대응하며, 각 열은 각 포켓몬의 개별 스탯을 나타냅니다(각각 HP, Attack, Defense, Special Attack, Special Defense, Speed).
가장 강한 포켓몬을 찾기 위해 각 포켓몬의 총합 스탯 값(즉, stats의 각 행의 합)과 평균 스탯 값(즉, stats의 각 행의 평균)을 구하려고 합니다.
아래의 for 반복문은 이 값을 수집하기 위해 작성되었습니다:
poke_list = []
for pokemon,row in zip(names, stats):
total_stats = np.sum(row)
avg_stats = np.mean(row)
poke_list.append((pokemon, total_stats, avg_stats))
이 연습은 강의의 일부입니다
효율적인 Python 코드 작성
연습 안내
- 위의 for 반복문을 NumPy로 대체하세요:
.sum()메서드와 올바른 축을 지정해 총합 스탯 배열(total_stats_np)을 만드세요..mean()메서드와 올바른 축을 지정해 평균 스탯 배열(avg_stats_np)을 만드세요.names리스트,total_stats_np배열,avg_stats_np배열을 결합해 최종 출력 리스트(poke_list_np)를 만드세요.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
# Create a total stats array
total_stats_np = ____.____(axis=____)
# Create an average stats array
avg_stats_np = ____
# Combine names, total_stats_np, and avg_stats_np into a list
poke_list_np = [*____(names, total_stats_np, avg_stats_np)]
print(poke_list_np == poke_list, '\n')
print(poke_list_np[:3])
print(poke_list[:3], '\n')
top_3 = sorted(poke_list_np, key=lambda x: x[1], reverse=True)[:3]
print('3 strongest Pokémon:\n{}'.format(top_3))