Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- pandas
- programmers
- 자료구조
- Join
- MySQL
- 선그래프
- type hint
- 데이터시각화
- 가상환경
- Matplotlib
- 백준
- javascript
- openCV
- Stack
- Algorithm
- NumPy
- 파이썬
- dataframe
- Selenium
- 정보처리기사 c언어
- String Method
- 알고리즘스터디
- 알고리즘 스터디
- 코딩테스트
- 프로그래머스
- python
- queue
- 알고리즘
- aws jupyter notebook
- 노마드코딩
Archives
- Today
- Total
조금씩 꾸준히 완성을 향해
[Numpy] 배열 연산(산술 연산, 내적 연산, Broadcasting) 본문
산술 연산 (Arithmetic Operators)
-넘파이는 파이썬과 동일하게 배열 간 산술 연산 지원
- 행렬과 행렬, 벡터와 백터 간 연산이 가능
-같은 배열의 구조일 때 요소별 연산(element-wise operation)
- 요소별 연산 : 두 배열의 구조가 동일할 경우 같은 인덱스 요소들끼리 연산
# a1 확인
a1 = np.arange(1, 10)
print(a1)
# [1 2 3 4 5 6 7 8 9]
# 여러가지 산술 연산자, 함수
print(a1+1) #[ 2 3 4 5 6 7 8 9 10]
print(np.add(a1, 10)) #[11 12 13 14 15 16 17 18 19]
print(a1-2) #[-1 0 1 2 3 4 5 6 7]
print(np.subtract(a1, 10)) #[-9 -8 -7 -6 -5 -4 -3 -2 -1]
print(-a1) #단항 음수 #[-1 -2 -3 -4 -5 -6 -7 -8 -9]
print(np.negative(a1)) #단항 음수 #[-1 -2 -3 -4 -5 -6 -7 -8 -9]
print(a1*2) #[ 2 4 6 8 10 12 14 16 18]
print(np.multiply(a1, 2)) #[ 2 4 6 8 10 12 14 16 18]
print(a1/2) #[0.5 1. 1.5 2. 2.5 3. 3.5 4. 4.5]
print(np.divide(a1, 2)) #[0.5 1. 1.5 2. 2.5 3. 3.5 4. 4.5]
print(a1//2) #나눗셈 내림 #[0 1 1 2 2 3 3 4 4]
print(np.floor_divide(a1, 2)) #나눗셈 내림 #[0 1 1 2 2 3 3 4 4]
print(a1**2) #지수연산 #[ 1 4 9 16 25 36 49 64 81]
print(np.power(a1, 2)) #지수연산 #[ 1 4 9 16 25 36 49 64 81]
print(a1 % 2) #나머지 연산 #[1 0 1 0 1 0 1 0 1]
print(np.mod(a1, 2)) #나머지 연산 #[1 0 1 0 1 0 1 0 1]
#2차원에서도 동일하게 산술연산 가능
a2 = np.arange(1, 10).reshape(3,3)
print(a2)
b2 = np.random.randint(1, 10, (3,3))
print(b2)
print(a2+b2)
내적 연산
배열간의 곱셈에서는 요소별 연산과 백터의 내적(dot product) 연산 가능
- 백터의 내적: 두 배열 간의 곱셈
- 두 개의 행렬에서 첫 번째 행렬의 열 크기와 두 번째 행렬의 행 크기가 동일해야 가능
- m * n 행렬과 n * 1 행렬, 벡터의 내적 연산하면 m * l의 행렬생성
x1 = np.arange(1, 7).reshape(2,3) # 3 x 3
x2 = np.arange(1, 7).reshape(3,2) # 3 x 2
print(x1)
print(x2)
print(x1.dot(x2)) # 2 x 2
x1 = np.arange(1, 11).reshape(2,5)
x2 = np.arange(1, 16).reshape(5,3)
print(x1)
print(x2)
print(x1.dot(x2))
Broadcasting Operations (브로드캐스팅 연산)
- 하나의 행렬과 스칼라 값들 간의 연산이나 행렬과 벡터간의 연산
- 방송국의 전파가 퍼지듯 뒤에 있는 스칼라 값이 모든 요소에 퍼지듯이 연산
x = np.arange(1, 10).reshape(3,3)
print(x)
print(x+10)
print(x*2)
print(x//2)
- 행렬과 스칼라 값 외에 행렬과 벡터, 벡터와 벡터 간에도 연산 가능
x1 = np.arange(1, 13).reshape(4,3)
x2 = np.arange(10, 40, 10)
print(x1)
print(x2)
print(x1 + x2)
'Python > Numpy & Pandas' 카테고리의 다른 글
[Pandas] Pandas의 개념 & Series 객체 생성하고 다루기 (0) | 2022.09.25 |
---|---|
[Numpy] 비교 연산(Comparison Operators) (0) | 2022.09.25 |
[Numpy] 배열의 구조 변경 (reshape, flatten, newaxis) (0) | 2022.09.23 |
[Numpy] 배열 초기화&특정배열 생성(zeros, ones, full, eye, tri, empty, _like) (0) | 2022.09.22 |
[Numpy] 배열의 구조와 정보 확인(shape, ndim, dtype, size, itemsize, nbytes, strides) (0) | 2022.09.22 |