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]]
서브목차