20260529
import numpy as np
# 배열 생성
a = np.array([1, 3, 5, 7, 9]) # 1D 배열
b = np.array([[1, 2, 3], [4, 5, 6]]) # 2D 배열 (행렬)
c = np.zeros((3, 4)) # 3x4 영행렬
d = np.arange(0, 10, 2) # [0, 2, 4, 6, 8]
e = np.linspace(0, 1, 5) # [0.0, 0.25, 0.5, 0.75, 1.0]
print(a)
print(b)
print(c)
print(d)
print(e)
print("shape:", b.shape) # (2, 3) 크기
print("dtype:", b.dtype) # int64 형태
print("ndim :", b.ndim) # 2 차원
# 기본 연산 (요소별)
x = np.array([1.0, 2.0, 3.0])
print(x * 2) # [2. 4. 6.] 각 수에 2를 곱한 값
print(x ** 2) # [1. 4. 9.] 각 수에 2를 제곱한 값
print(np.sqrt(x)) # [1. 1.41 1.73] 각 수에 √를 씨운 값
# 행렬 연산
A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])
print(A @ B) # 행렬곱 (또는 np.dot(A, B))
# 슬라이싱 & 인덱싱
mat = np.arange(12).reshape(3, 4) # 0 ~ 11 까지 3행 4열
print(mat[0]) # 첫 번째 행
print(mat[:, 1]) # 두 번째 열 (각 행의 두번째 수)
print(mat[1:, 2:]) # 슬라이싱 (1행↑(0, 1, 2행 중 1행, 2행), 2열↑(0, 1, 2, 3열중 2열, 3열))
print(mat)
# 통계
data = np.random.randn(100) # 정규분포 난수 100개
print(f"평균: {data.mean():.4f}, 표준편차: {data.std():.4f}")

