본문 바로가기
알고리즘 PS (백준)/🐍 Python (파이썬)

[파이썬 python] : numpy 설치 및 활용 (배열 , 수학/행렬연산 , 코싸인 유사도)

by 코딩하는 동현😎 2022. 6. 2.

numpy 모듈

과학 연산과 인공지능 행렬 연산을 위해서 설계된 파이썬 라이브러리 입니다.

다차원 배열 처리와 수학 기능들을 쓸수 있고 , 내부적으로 c언어 구현되어있어 매우 빠르고 효율적입니다.

설치하기(윈도우 / 맥 mac)

 

pip (파이썬 패키지 관리 시스템) 를 설치 안했다면? (맥 MAC) - 3.9 버전 기준

윈도우는 python3.9 대신에 python을 입력하세요!


pip로 numpy 설치하기

윈도우 cmd
python -m pip install numpy

맥 터미널 (3.9 버전 기준)
python3.9 -m pip install numpy

 


numpy array 생성하기

numpy의 array 메소드를 통해 배열로 변환할수 있습니다.


numpy의 arange 함수 (리스트의 range와 동일)

import numpy as np

print(np.arange(10))
#0~10이전까지 # 0 1 2 3 4 5 6 7 8 9
print(np.arange(1,10,2))
#0~10이전까지 두칸씩 # 0 1 3 5 7 9
print(np.arange(1,2,0.1))
# 1. 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9

zeros - 0 으로 이루어진 배열,  ones - 1로 이루어진 배열

eye - 1로 이루어진 대각행렬


수학 메소드

import numpy as np 로 선언했다고 가정했을때,

  • np.sqrt() : 제곱근 구하기
  • np.sin() , np.cos() ... : 삼각함수 값 구하기
  • np.pi : 파이 값
  • np.random.rand(5) 0~1사이 실수로 크기 5 배열 생성
  • np.random.choice(10 ,5) 0~10 사이 정수로 크기 5 배열 생성

n차원 행렬 만들기

 

[0,1,2,3,4,5,6,7,8,9] 배열을 arange로 생성하고 reshape를 이용해 2*5 2차원 행렬만들기

행렬[m,n]를 이용해 그 좌표의 값을 반환하는 인덱싱을 할 수 있습니다.

 


행렬 연산자로 연산

행렬합을 쓸수 있고, 곱과 나누기는 각 대응되는 원소들 끼리 연산해서 행렬을 출력합니다.


행렬 곱(내적) 과 전치하기(transpose)

numpy의 dot(a ,b)를 이용해서 내적할수 있고 , a.T 또는 a.transpose()를 이용해서 전치행렬로 만들수 있습니다.

내적함수는 굳이 한쪽 행렬을 전치 하지 않아도 내적 할수 있습니다.


예시) 코싸인 유사도 구하기

import numpy as np
import matplotlib.pyplot as plt
Docs = np.array([[1,1,0,1,0,1] , [1,1,1,0,1,0] , [1,1,0,1,0,0]])
Query = np.array([1,1,0,0,1,0])
q_size = np.sqrt(np.dot(Query,Query))
result = []
x=[]
for i,d in enumerate(Docs[:]):
    d_size = np.sqrt(np.dot(d,d))
    cos = np.dot(d,Query)/(d_size*q_size)
    x.append("doc{0:d}={1:.2f}".format(i+1 , cos))
    result.append(cos)

plt.bar(x , result)
plt.show()

마스크 씌우기

마스크는 배열[조건]으로 씌울수 있습니다.

조건에 알맞은 항만 남아서 배열/행렬을 이룹니다.

반응형

댓글