치악산 복숭아

[엘리스 AI트랙] 13-02-01 Numpy 본문

elice/토끼성장일지

[엘리스 AI트랙] 13-02-01 Numpy

Juliie 2022. 1. 16. 18:06

1. Numpy란?

  • 파이썬에서 사용되는 과학 컴퓨팅용 라이브러리
  • 파이썬 언어에서 기본으로 지원하지 않는 행렬과 같은 데이터 구조 지원 및 수학/과학 계산 함수 포함

행렬이 왜 필요한가? -> 머신러닝에서 대부분의 데이터는 행렬로 표현되기 때문

 

2. 행렬 만들기

행렬

import numpy as np

A = np.array([[1, 2], [3, 4]])

print(A)
// [[1 2]
//  [3 4]]
  • 이렇게 만들어진 행렬은 곱셈, 덧셈, 뺄셈이 가능
// 곱셈
print(A * 3)
// [[3 6]
//  [9 12]]

// 덧셈
print(A + A)
// [[2 4]
//  [6 8]]

// 뺄셈
print(A - A)
// [[0 0]
//  [0 0]]

print(A ** 2)
// [[1 4]
//  [9 16]]

print(3 ** A)
// [[3 9]
//  [27 81]]

print(A * A)
// [[1 4]
//  [9 16]]

 

3. dot 함수

np.dot(x, y)는 x * y와 다르다 !
2차원 * 2차원의 행렬곱으로 예시를 들어보자면 계산방법은
해당 행의 1번째 숫자 * 해당 열의 1번째 숫자 + 해당 행의 2번째 숫자 * 해당 열의 2번째 숫자가 된다

x = np.array([[1, 2], [3, 4]])
y = np.array([[3, 4], [3, 2]])

print(np.dot(x, y))
// [[9 8]
//  [21 20]]

print(x * y)
// [[3 8]
//  [9 8]]

4. 비교 연산

a = np.array([1, 2, 3, 4])
b = np.array([4, 2, 2, 4])

print(a == b)
// [False, True, False, True]

print(a > b)
// [False, False, True, False]

 

5. 논리 연산

a = np.array([1, 1, 0, 0], dtype=bool)
b = np.array([1, 0, 1, 0], dtype=bool)

print(np.logical_or(a, b))
// [True, True, True, False]

print(np.logical_and(a, b))
// [True, False, False, False]

 

6. Reductions

  • argmin: 최소값의 인덱스를 반환
  • argmax: 최대값의 인덱스를 반환
a = np.array([1, 2, 3, 4, 5])

print(a.min())
// 1
print(a.max())
// 5

print(a.argmin())
// 0
print(a.argmax())
// 4

7. Logical Reductions

  • all: Array 내의 모든 값이 True인가?
  • any: Array 내의 값이 하나라도 True인가?
a = np.array([True, True, True])
b = np.array([True, True, False])

np.all(a) //True
np.all(b) //False

np.any(a) //True
np.any(b) //True

8. Statistical Reductions

  • np.mean(x): 평균값
  • np.median(x): 중간값
  • np.std(x): 표준편차
x = np.array([1, 2, 3, 1])

print(np.mean(x)) // 1.75
print(np.median(x)) // 1.5
print(np.std(x)) // 0.82915619758884995
Comments