import numpy as np
# 1. numpy.array : ndarray 객체 생성
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6], [7, 8]])
# 3. numpy.ndarray.shape : 차원 정보
print("Shape of a:", a.shape)
# 4. numpy.ndarray.transpose / numpy.ndarray.T : 전치 행렬
a_transposed = a.transpose()
print("Transpose of a:\n", a_transposed)
print("Transpose of a.T:\n", a.T)
# 5. numpy.dot : 행렬 곱셈
dot_a_b = np.dot(a, b)
print("dot of a and b:\n", dot_a_b)
# 6. numpy.matmul : @ 연산자
matmul_a_b = np.matmul(a, b)
print("Matmul (a @ b):\n", matmul_a_b)
# 7. numpy.linalg.inv : 역행렬
# 역행렬이 존재하는 정방행렬 생성
c = np.array([[1, 2], [3, 4]])
c_inv = np.linalg.inv(c)
print("inverse of c: \n",c_inv)
# 8. 연산자 사용: +, -, *, /
add_result = a + b
sub_result = a - b
mul_result = a * b
div_result = a / b
print("a + b:\n", add_result)
print("a - b:\n", sub_result)
print("a * b:\n", mul_result)
print("a / b:\n", div_result)
# 9. numpy.sin, numpy.cos, numpy.pi
angles = np.array([0, np.pi / 2, np.pi])
print("sin:", np.sin(angles))
print("cos:", np.cos(angles))
# 10. numpy.eye: 단위행렬
eye_matrix = np.eye(3)
print("3x3 Identity matrix:\n", eye_matrix)
# 11. numpy.ones : 모든 원소가 1인 행렬
ones_matrix = np.ones((3, 3))
print("3x3 matrix_ones:\n", ones_matrix)
# 12. numpy.zeros : 모든 원소가 0인 행렬
zeros_matrix = np.zeros((3, 3))
print("3x3 matrix_zeros:\n", zeros_matrix)