Numpy란?
수치해석용 Python 패키지로 Numerical Python extensions의 줄임말이다. 다차원 배열 자료구조 클래스인 ndarray 클래스를 지원하고, 벡터와 행렬을 사용하는 선형대수 계산을 사용할 수 있다.
데이터 분석 파이썬 패키지들의 기초가 된다.
아주 간단한 예제들을 진행하겠습니다.
import numpy as np
# 1차원 배열 생성
a = np.array([1,2])
print(a)
# 2차원 배열 생성
b = np.array([[1,2,3], [4,5,6]])
print(b)
# 3행 2열의 배열 생성
c = np.zeros((3, 2))
print(c)
# 3행 2열의 배열 생성
c = np.ones((3, 2))
print(c)
# 3x3 단위행렬
a = np.identity(3)
print(a)
ar = np.arange(0, 10, 2)
print(ar)
a1 = np.linspace(0, 5, 5)
print(a1)
a2 = np.linspace(0, 5, 2)
print(a2)
k = np.arange(12)
print(k)
print()
# 기존의 1차원 배열 -> 2x6 배열로 변경
print(k.reshape(2, 6))
print()
# 인수 중 하나에 -1을 넣으면 자동으로 해당 행/열의 크기가 계산된다.
print(k.reshape(3, -1))
k = np.arange(12)
k = k.reshape(3, -1).transpose() # 3x4 -> 4x3으로 transpose
print(k)
print()
# 한번 더 transpose
print(np.transpose(k))
a = np.arange(1, 5).reshape(2, -1)
b = np.arange(5, 9).reshape(-1, 2)
print(a)
print()
print(b, "\n")
# 덧셈
print(a + b, "\n")
# 뺄셈
print(a - b, "\n")
# 곱셈 (같은 (행,열) x (행,열) 1번만 계산)
print(a * b, "\n")
# 나눗셈
print(a / b, "\n")
# 행렬 곱셈
print(a @ b,"\n")
print(a.dot(b),"\n")
print(np.dot(a, b),"\n")
a = np.array([1, -1, 0, 1]).reshape(2,2)
c = np.linalg.inv(a) # 행렬 a 의 역행렬
print(a)
print(c)
print(a @ c) # 행렬 a @ 행렬 a 의 역행렬 = 단위행렬
k = np.array([1, -1, 0, 1]).reshape(2,2)
print(np.linalg.det(k)) # ad - bc
a = np.arange(1, 13).reshape(3, -1)
print(a, "\n")
print("대소 비교 1.", a > 5, "\n")
print("대소 비교 2.", a == 3, "\n")
a = np.arange(1, 13).reshape(3, -1)
print(a, "\n")
print("1행 ~ 끝행까지, 0열부터 끝열까지 2열씩 건너뛰기")
print(a[1::, ::2], "\n")
print("0행 ~ 끝행까지, 1열 ~ 2열")
print(a[::, 1:2:], "\n")
print("1행만, 0열부터 끝에서 첫번째 열까지 2열씩 점프")
print(a[1, :-1:2], "\n")
print("0행 ~ -2행, 0열부터 끝열 전까지 3열씩 점프")
print(a[0:-2:, ::3], "\n")