티스토리 뷰
넘파이의 사용
딥러닝을 구현시 배열과 행렬의 계산이 많이 등장하고 이때 넘파이의 배열 클래스인 numpy.array에서의 메서드들을 사용하면 편리함
+ 주로 C와 C++로 구현이 되어있기때문에 동적언어인 파이썬으로 구현됐을 때보다 처리 속도가 빠름.
1. 넘파이 배열 생성
import numpy as np
=> np.array를 설정하고 다양한 메소드들을 적용시키며 사용할 수 있음
#넘파이 가져오기
import numpy as np
#넘파이는 파이썬의 동적언어로인한 속도가 늦다는 단점을 보완해줄 수도 있음. 정적언어인 C와 C++로 주로 구현됨.
#넘파이 배열 생성
x = np.array([1.0,2.0,3.0])
print(x,type(x))
=> [1. 2. 3.] <class 'numpy.ndarray'>
2. 넘파이의 연산
*넘파이의 연산
=> 원소의 수가 같을 때만 오류를 발생하지 않으며 연산이 이루어진다.
=> 각 원소별로 계산이 이루어지며 다른 원소에게는 +,-,*,/ 등의 연산이 영향을 주지 않는다.
=> 다만, 스칼라 연산일경우에는 브로드캐스트 기능이 적용되며 산술 연산이 이루어지며 이때 하나의 스칼라 값이 모든 원소에 영향을 미치는 것처럼 보이지만 실제로는 스칼라값이 행렬의 크기대로 추가되어 그 이후 각 원소별 연산이 이루어진다.
* 브로드캐스트란?
넘파이의 연산시 행렬과 스칼라의 연산이 가능하며 이때 스칼라값의 행렬이 확대되어 계산이 이루어진다.
=> 넘파이에서는 형상이 다른 배열끼리도 계산이 가능함.
x = np.array([1.0,2.0,3.0])
y = np.array([2.0,3.0,4.0])
print(x+y)
print(x-y)
print(x/y)
#여기서 주의할 점은 배열 x와 y의 원소수가 같아야함.
print(x/2.0)
#이때 스칼라 값과 넘파이 배열은 산술연산이 가능하며 이를 "브로드캐스트"라고 함.
#브로드캐스트 : 스칼라값이 행렬의 크기에 맞춰서 확대된 후 연산이 이루어지고 이때의 기능을 브로드캐스트라고함.
A = np.array([[1,2],[3,4]])
print(A)
print(A.shape)
#shape를 통한 행렬의 형상(차원의 크기)를 알 수 있음.
print(A.dtype)
#dtype을 통해 행렬 원소의 데이터 타입을 알 수 있음.
B = np.array([[3,0],[0,6]])
print(A+B)
print(A*B)
#배열과 마찬가지로 np.array 역시 행렬과 스칼라값의 산술연산이 가능함.
3. 넘파이 배열의 원소 접근
선언한 np.array의 이름을 X라고 할 때,
* 평탄화시키는 방법 -> 차원을 줄일 수 있음
X.flatten( )을 통해서 1차원 배열 X로 바꿔줌
* 인덱싱방법 => X = X[~인덱싱할조건~]
X = X[np.array([인덱싱할 원소의번호들])]을 통해서 인덱싱하고 싶은 원소의 번호에 있던 값들만 X에 초기화됨
X = X[X>15]처럼 X[~~~]를 활용해서 인덱싱이 가능함
X = np.array([[51,55],[14,9],[0,4]])
print(X)
print(X[0])
print(X[0][1])
#배열을 사용할 때와 마찬가지로 np.array의 원소 접근이 다음과 같이 이루어짐.
#추가개념 -> flatten()
X = X.flatten()
print(X)
#추가개념 -> np.array이름[np.array([인덱싱할 번호])]
print(X[np.array([0,2,4])])
#추가개념 -> np.array를 통해 정의한 X벡터가 있을 때 부드호(>,<)를 통해서 인텍싱할 수 있음
print(X>15)
print(X[X>15])
'데이터분석 및 인공지능 > 밑바닥부터 시작하는 딥러닝' 카테고리의 다른 글
밑바닥부터 시작하는 딥러닝-(5) MNIST 추론과정 (0) | 2021.09.25 |
---|---|
밑바닥부터 시작하는 딥러닝-(4) 신경망 (0) | 2021.09.23 |
밑바닥부터 시작하는 딥러닝-(3) (0) | 2021.09.20 |
밑바닥부터 시작하는 딥러닝-(2) (0) | 2021.09.17 |
- Total
- Today
- Yesterday
- 코딩월드뉴스
- 백준 11053 파이썬
- 파이썬 알아두면 유용
- 10866 백준
- 온라인프로필 만들기
- DRF 회원관리
- LAMBDA
- 백준 15650 파이썬
- 백준 10866
- 딥러닝입문
- 영화 리뷰 긍정 부정 분류
- 백준 숫자놀이
- CSMA/CD란?
- mm1queue
- 모듈 사용법
- 소프트웨어공학설계
- 시뮬레이션 c
- 13886
- 스택 파이썬
- stack 컨테이너
- 백트래킹(1)
- 기본 텍스트 분류
- 11053 백준
- CREATE ASSERTION
- 4963 섬의개수
- 핀테크 트렌드
- 백준 4963
- c++덱
- 효율적인방법찾기
- 기사작성 대외활동
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |