Numpy

박지훈·2020년 7월 18일
0

Python

목록 보기
2/7

Numpy란?
수치해석용 Python 패키지로 Numerical Python extensions의 줄임말이다. 다차원 배열 자료구조 클래스인 ndarray 클래스를 지원하고, 벡터와 행렬을 사용하는 선형대수 계산을 사용할 수 있다.
데이터 분석 파이썬 패키지들의 기초가 된다.


Numpy 배워보기

아주 간단한 예제들을 진행하겠습니다.

- .array()

  • 배열 생성 함수
import numpy as np

# 1차원 배열 생성
a = np.array([1,2])
print(a)



# 2차원 배열 생성
b = np.array([[1,2,3], [4,5,6]])
print(b)



- .zeros()

  • 0으로 초기화된 배열 생성 함수
# 3행 2열의 배열 생성
c = np.zeros((3, 2))
print(c)



-.ones()

  • 1으로 초기화된 배열 생성 함수
# 3행 2열의 배열 생성
c = np.ones((3, 2))
print(c)



- .identity()

  • 단위행렬 생성 함수
# 3x3 단위행렬
a = np.identity(3)
print(a)



- .arange(시작, 끝(포함X), 건너뛰기)

  • 범위숫자내의 숫자들을 배열로 생성
ar = np.arange(0, 10, 2)
print(ar)



- .linspace(시작, 끝(포함), 몇등분)

  • 각 요소들이 동일한 간격을 갖도록 하는 배열 생성
a1 = np.linspace(0, 5, 5)
print(a1)

a2 = np.linspace(0, 5, 2)
print(a2)



- .reshape()

  • 기존의 행렬(2차원 배열)의 모양을 변경
k = np.arange(12)
print(k)
print()

# 기존의 1차원 배열 -> 2x6 배열로 변경
print(k.reshape(2, 6))
print()

# 인수 중 하나에 -1을 넣으면 자동으로 해당 행/열의 크기가 계산된다.
print(k.reshape(3, -1))

  • 인수 중 하나에 -1을 넣으면 자동으로 해당 행/열 크기 계산해준다.
  • 약수가 아닌 수를 넣게되면 에러 발생



- .transpose(a)

  • 전치행렬 생성 함수
k = np.arange(12)
k = k.reshape(3, -1).transpose()    # 3x4 -> 4x3으로 transpose

print(k)
print()

# 한번 더 transpose
print(np.transpose(k))



- numpy 배열 간의 연산

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")



- .linalg.inv()

  • numpy 내의 선형대수 패키지
  • 역행렬을 생성
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 의 역행렬 = 단위행렬



- .linalg.det()

  • 행렬식(determinant)를 생성
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")



- Slicing

  • 문자열 자르기와 동일하다.
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")


profile
Computer Science!!

0개의 댓글