일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- student t분포
- 최소자승법
- word2vec
- 텐서플로2와 머신러닝으로 시작하는 자연어처리
- 은준아 화이팅
- 밑바닥부터 시작하는 딥러닝2
- 밑바닥부터 시작하는 딥러닝
- rnn
- 코사인 유사도
- Pandas
- 모두의 딥러닝
- 감성분석
- 기술통계학
- 머신러닝
- 다층 퍼셉트론
- F분포
- numpy
- 결정계수
- 자연어 처리
- 오래간만에 글쓰네
- 군집화
- 파이썬 pandas
- 텍스트 분류
- 기초통계
- 차원축소
- 구글 BERT의 정석
- 히스토그램
- 가설검정
- Django
- 회귀분석
- Today
- Total
데이터 한 그릇
넘파이) 행렬 배치, 연산 본문
arange, reshape
np.arange(10)
1부터 9까지의 1차원 array를 만든다.
np.arange(10).reshape(2,5)
10에 맞춰서 2행 5열로 배열을 만든다.
행렬의 shape을 reshape을 조정할 수 있다.
a = np.arange(24).reshape(2,3,4)
깊이를 깊게 하여 만들 수 있다.
a.reshape(2,3,-1)
-1은 앞의 인자들을 참조하여 자동으로 행렬을 완성시켜준다
행렬곱 연산
파이썬 @을 이용한 1연산
a = np.array([[0,1,2],[3,4,5]])
b = np.array([[6,7,8],[9,10,11]])
a와 b의 shape을 보면 2 * 3이기 때문에 연산곱의 조건을 만족시키지 못함
따라서 b를 전치시켜서 행렬곱을 수행할 것임
#행렬 곱을 위해서 맞춰줌
b.T
a @ b.T
shape이 3행2열이 되면서 a의 2행 3열의 shape과 행렬곱으르 할 수 있는 조건이 됨
파이썬 내장 함수인 @을 사용해서 행렬의 곱을 할 수 있음
@은 matrix든 ndarray들 상관없이 사용 가능
넘파이 dot 사용한 행렬 곱
#dot은 배열과 매트릭스 행렬곱을 가능하게 해준다.
np.dot(a,b.T)
dot은 matrix든 ndarray든 행렬곱을 가능하게 해준다.
넘파이에서 제공한다.
#dot은 method 방식으로 제공이 된다.
a.dot(b)
dot은 method 형식으로도 제공한다.
numpy broadcasting
a + np.array([3,4]) #1행 2열
a가 2행 3열이고 뒤에 array가 1행 2열이기 때문에 broadcasting이 되지 않음
행의 개수가 같거나 열의 개수가 같아야지 broadcasting 가능
a + np.array([3,4,5]) #열의 갯수가 같음
axis
a = np.arange(12).reshape(3,4)
np.sum(a)
행렬 내의 숫자들의 총 합을 구한다.
np.sum(a, axis= 0)
axis = 0은 행을 기준으로 합함을 의미함. 이때 주의해야함, 행을 기준으로 한다는 것은 행렬을 수직으로 더함을 의미
(axis = 0은 행을 의미, axis = 1 은 열을 의미)
a = np.arange(24).reshape(2,3,4)
a.sum(axis = 0) #이때 0은 depth를 뜻함 공간기준(공간마다)
공간 기준으로 다 더해버림.
즉 1차원 2차원으로 다 더함
a = np.arange(24).reshape(3,2,4)
a.sum(axis = 0)
3개의 깊이로 확장해도 똑같음
a.sum(axis=1) #행마다.
각 깊이마다 행 기준으로 값을 모두 더함
따라서 3차원 2행 4열일 경우에는 3행 4열의 모습이 됨
a.sum(axis=2) #열기준
각 깊이마다 열기준으로 더한다. 따라서 3행 2열의 모습을 보임
ufunc
ufunc은 universal function의 줄임말이다.
universal은 모든 사람을 위한, 범용성이라는 뜻을 가지고 있다.
np.add(np.array([1,2,3]),np.array([4,5,6])) #array 처리
np.add([1,2,3],[4,5,6]) #리스트 처리
np.add(3,4) #스칼라 처리
add가 ufunc이기 때문에 array, list, 스칼라를 처리 가능하다.
resize
a = np.arange(24)
a.resize(2,3,1)
a
resize는 변수로 새로 받지 않아도 함수를 통해서 바로 형태가 바뀜
또한 원소의 개수가 달라도 변형이 됨
reshape는 변수로 받아야지 새롭게 바뀌게 되고 원소의 개수가 맞아야 바뀐다.
a = np.arange(24)
a.resize(2,3,8)
a
본래의 원소 개수보다 더 크게 행렬을 변형시키면 초과된 공간은 모두 0으로 채운다.
'Python > 넘파이(numpy)' 카테고리의 다른 글
넘파이)구조화된 배열 (0) | 2021.06.08 |
---|---|
넘파이)차원확대,차원교환 (0) | 2021.06.08 |
넘파이 배열 나누고 합치기 (0) | 2021.06.07 |
넘파이 시작하기 2 (0) | 2021.06.02 |
넘파이 시작하기 (0) | 2021.06.02 |