4.12.1 넘파이 실전 연습: 기본기 점검

넘파이 연습문제

앞서 배운 배열 생성, 다차원 인덱싱, 불리언(Boolean) 필터링, 그리고 축(axis) 연산 개념까지! 지금까지 배운 넘파이의 강력한 기능들을 바탕으로 스스로 문제를 해결해 보세요. 정답 코드를 스크롤해서 내려보기 전에, 빈 파이썬 스크립트를 열고 스스로 코딩을 시도해 보는 것을 강력히 권장합니다.


📝 [문제]

문제 1 (스칼라 브로드캐스팅) 주어진 1차원 벡터의 “모든” 요소에 5를 한꺼번에 더한 새로운 배열을 출력하시오. (for 반복문을 쓰면 안 됩니다!)

import numpy as np
a = np.array([1, 2, 3, 4, 5])

문제 2 (배열 생성 및 필터링) 0부터 20 사이의 숫자 중에서 짝수만 들어있는 Numpy 배열을 생성하시오. (힌트: arange 함수의 step 파라미터 활용)

문제 3 (배열 형태 변환) 0부터 11까지의 숫자가 들어있는 1차원 배열을 만들고, 이를 3행 4열의 2차원 행렬로 변환하시오. (힌트: reshape)




(정답은 충분히 고민한 후 아래로 스크롤하세요!)





🎯 [정답 및 해설]

[문제 1 정답]

넘파이의 강력한 최대 장점 중 하나인 스칼라 브로드캐스팅(Broadcasting)입니다. 굳이 파이썬의 for 루프를 순회하지 않아도 스칼라 값(5)이 벡터의 모든 요소로 전파(Broadcast)되어 즉석에서 계산됩니다.

print(a + 5)
# 출력: [ 6  7  8  9 10]

[문제 2 정답]

가장 마지막 숫자 파라미터는 step(오폭) 단위입니다.

evens = np.arange(0, 21, 2)
print(evens)
# 출력: [ 0  2  4  6  8 10 12 14 16 18 20]

[문제 3 정답]

arr = np.arange(12)
matrix = arr.reshape(3, 4)
print(matrix)
# 출력: 
# [[ 0  1  2  3]
#  [ 4  5  6  7]
#  [ 8  9 10 11]]
서브목차