1. 벡터화 - 벡터 연산
- 원소 단위로 계산한다.
- 같은 형태(shape)의 배열(벡터, 행렬)간의 연산은 같은 index의 원소끼리 연산을 한다.
- Element-wise(원소별) 연산 이라고도 한다.
- 배열간의 연산시 배열의 형태가 같아야 한다.
- 배열의 형태가 다른 경우 Broadcast 조건을 만족하면 연산이 가능하다.
1.1 벡터/행렬과 스칼라간 연산
원소별로 연산한다.
1.2 벡터/행렬의 연산
쉐잎이 같아야한다.같은 쉐잎의 배열끼리만 연산이 가능하다
2. 내적 (Dot product)
- 고등학교때 배웠던 행렬의 곱셈 방식.
- @ 연산자 또는 numpy.dot(벡터/행렬, 벡터/행렬) 함수 사용.
2.1 벡터간의 내적
- 같은 index의 원소끼리 곱한뒤 결과를 모두 더한다.
- 벡터간의 내적의 결과는 스칼라가 된다.
- 𝑥⋅𝑦 또는 𝑥𝑇𝑦 로 표현
- 조건
- 두 벡터의 차원(원소의개수)가 같아야 한다.
- 앞의 벡터는 행벡터 뒤의 벡터는 열벡터 이어야 한다.
- numpy 에서는 vector 끼리 연산시 앞의 벡터는 행벡터로 뒤의 벡터는 열벡터로 인식해 처리한다.
2.2 행렬간의 내적
- 앞 행렬의 행과 뒤 행렬의 열간에 내적을 한다.
- 행렬과 행렬을 내적하면 그 결과는 행렬이 된다.
- 앞 행렬의 열수와 뒤 행렬의 행수가 같아야 한다.
- 내적의 결과의 형태(shape)는 앞행렬의 행수와 뒤 행렬의 열의 형태를 가진다.
- (3 x 2)와 (2 x 5) = (3 x 5)
- (1 x 5)와 (5 x 1) = (1,)
- 'ㄱ'을 기억하세요
3. 범용함수(Ufunc, Universal function)
3.1 범용함수란
3.2 주요함수
3.2.1 단항 범용함수(unary ufunc)
- 매개변수로 한개의 배열을 받는다.
- 한 배열내의 원소별로 연산
3.2.2 이항 범용함수
- 매개변수로 두개의 배열을 받는다.
- 두 배열의 같은 index 원소별로 연산
3.2.3 누적연산함수 - reduce()
- 결과가 하나만 남을 때 까지 해당 연산을 배열의 모든 요소에 반복해서 적용
- 처리결과의 축의개수(rank)는 하나 줄어 든다.
- 1차원 -> 스칼라
- 2차원 - 1차원
- 3차원 - 2차원
- n 차원 - n-1차원
- 구문
- np.이항범용함수이름.reduce(배열, axis=0)
3.2.4 누적연산함수 - accumulate()
- 배열의 원소들에 해당연산을 누적해 적용
- 처리경과의 축의개수(rank)는 피연산자배열과 동일하다.
- 누적해서 보여줘야하기 때문에 axis에 None을 넣을 수 없다.
- 구문
- np.이항범용함수이름.accumulate(배열, axis=0)
3.2.5 기술통계함수
3.3 결측치
- 알 수 없는 값
- 수집되지 않은 값, 모르는 값.
- 없는 값은 아니다.
- 넘파이에서는 : None, numpy.nan, numpy.NAN 를 결측치로 분류
3.4 boolean 배열의 계산
- True는 1로 False는 0으로 처리.
- 특정 조건의 값이 몇 개 있는지 count할 때 사용할 수 있다.
4. 브로드 캐스팅
- 사전적의미 : 퍼트린다. 전파한다.
- 형태(shape)가 다른 배열 연산시 배열의 형태를 맞춰 연산이 가능하도록 한다.
- 모든 형태를 다 맞추는 것은 아니고 조건이 맞아야 한다.