일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- 리스트
- Slicing
- INSERT
- barh
- MacOS
- Machine Learning
- 등차수열
- SQL
- maplotlib
- pandas
- tree.fit
- 통계학
- 스터디노트
- Folium
- 머신러닝
- matplotlib
- 순열
- python
- 조합
- plt
- 기계학습
- numpy
- 파이썬
- DataFrame
- 등비수열
- 문제풀이
- 재귀함수
- pandas filter
- 자료구조
- pandas 메소드
Archives
- Today
- Total
코딩하는 타코야끼
[Numpy] 3강_배열 연산 / 브로드캐스팅 본문
728x90
반응형
1. 배열 연산
📍 벡터화 - 벡터 연산
- 배열과 scalar 간의 연산은 원소단위로 계산한다.
- 배열간의 연산은 같은 index의 원소끼리 계산 한다.
- Element-wise(원소별) 연산 이라고도 한다.
- 배열간의 연산시 배열의 형태(shape)가 같아야 한다.
- 배열의 형태가 다른 경우 Broadcast 조건을 만족하면 연산이 가능하다.
🌓 배열과 스칼라간 연산
🌓 배열 간의 연산
📍 내적 (Dot product) 연산
- @ 연산자 또는 numpy.dot(벡터/행렬, 벡터/행렬) 함수 사용
🌓 1차원 배열(벡터)간의 내적
- 같은 index의 원소끼리 곱한뒤 결과를 모두 더한다.
- 벡터간의 내적의 결과는 스칼라가 된다.
- 조건
- 두 벡터의 차원(원소의개수)가 같아야 한다.
- 앞의 벡터는 행벡터 뒤의 벡터는 열벡터 이어야 한다.
- numpy 에서는 vector 끼리 연산시 앞의 벡터는 행벡터로 뒤의 벡터는 열벡터로 인식해 처리한다.
🌓 행렬간의 내적 (행렬 곱)
- 앞 행렬의 행과 뒤 행렬의 열간에 내적을 한다.
- 행렬과 행렬을 내적하면 그 결과는 행렬이 된다.
- 앞 행렬의 열수와 뒤 행렬의 행수가 같아야 한다.
- 내적의 결과의 형태(shape)는 앞행렬의 행수와 뒤 행렬의 열의 형태를 가진다.
- (3 x 2)와 (2 x 5) = (3 x 5)
- (1 x 5)와 (5 x 1) = (1 x 1)
x = np.array([1, 2, 3])
y = np.array([4, 5, 6])
r1 = x * y # array([ 4, 10, 18])
result = np.sum(r1)
result
>>>
32
----------------------------------------------------------------
x @ y, np.dot(x, y)
>>>
(32, 32)
A = np.arange(1, 7).reshape(2, 3)
B = np.arange(1, 7).reshape(3, 2)
A.shape, B.shape
>>>
((2, 3), (3, 2))
A @ B
>>>
array([[22, 28],
[49, 64]])
----------------------------------------------------------------
B.shape, A.shape
>>>
((3, 2), (2, 3))
----------------------------------------------------------------
B @ A
>>>
array([[ 9, 12, 15],
[19, 26, 33],
[29, 40, 51]])
- 예)
📍 기술통계함수
- 통계 결과를 계산해 주는 함수들
- 구문
- np.전용함수(배열)
- np.sum(x)
- 일부는 배열.전용함수( ) 구문 지원
- x.sum()
- 공통 매개변수
- axis=None: 다차원 배열일 때 통계값을 계산할 axis(축)을 지정한다. None(기본값)은 flatten후 계산한다.
- np.전용함수(배열)
- 배열의 원소 중 누락된 값(NaN - Not a Number) 있을 경우 연산의 결과는 NaN으로 나온다.
- 안전모드 함수
- 배열내 누락된 값(NaN)을 무시하고 계산
- https://docs.scipy.org/doc/numpy-1.15.1/reference/routines.statistics.html
🌓 결측치
- a.nansum()
np.nansum(a), np.nanmax(a), np.nanmean(a)
>>>
(478.0, 87.0, 53.11111)
🌓 2차원 / 3차원 통계량 계산
4. 브로드캐스팅
- 사전적의미 : 퍼트린다. 전파한다.
- 형태(shape)가 다른 배열 연산시 배열의 형태를 맞춰 연산이 가능하도록 한다.
- 모든 형태를 다 맞추는 것은 아니고 조건이 맞아야 한다.
- 조건
- 두 배열의 축의 개수가 다르면 작은 축의개수를 가진 배열의 형태(shape)의 앞쪽을 1로 채운다.
- (2, 3) + (3, ) => (2, 3) + (1, 3)
- 두 배열의 차원 수가 같지만 각 차원의 크기가 다른 경우 어느 한 쪽에 1이 있으면 그 1이 다른 배열의 크기와 일치하도록 늘어난다.
- 1 이외의 나머지 축의 크기는 같아야 한다.
- 늘리면서 원소는 복사한다.
- (2, 3) + (1, 3) => (2, 3)+(2, 3)
- 두 배열의 축의 개수가 다르면 작은 축의개수를 가진 배열의 형태(shape)의 앞쪽을 1로 채운다.
반응형
'[T.I.L] : Today I Learned > Numpy' 카테고리의 다른 글
[Numpy] 2강_배열 원소 조회 / 배열 형태 변경 (2) | 2023.05.19 |
---|---|
[Numpy] 1강_Numpy 개요 및 배열생성 (0) | 2023.05.19 |