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
- 알고리즘 스터디
- 코딩테스트
- 파이썬
- queue
- javascript
- NumPy
- Stack
- 프로그래머스
- 가상환경
- type hint
- Join
- dataframe
- 알고리즘
- 데이터시각화
- Selenium
- python
- programmers
- MySQL
- 정보처리기사 c언어
- 선그래프
- aws jupyter notebook
- Algorithm
- 자료구조
- String Method
- pandas
- openCV
- 노마드코딩
- 백준
- 알고리즘스터디
- Matplotlib
Archives
- Today
- Total
조금씩 꾸준히 완성을 향해
[Numpy] 비교 연산(Comparison Operators) 본문
비교 연산
- 연산결과는 항상 boolean type을 가진 배열로 추출
1-1 브로드캐스팅 비교연산
- 하나의 스칼라 값과 벡터 간의 비교 연산은 벡터 내 전체 요소에 적용
x = np.array([4,3,2,6,8,5])
x > 3
# array([ True, False, False, True, True, True])
x == 3
#array([False, True, False, False, False, False])
x != 3
#array([ True, False, True, True, True, True])
1-2 요소별 비교연산
- 두 개의 배열 간 배열의 shape이 동일한 경우만 가능
- 같은 위치에 있는 요소들끼리 비교 연산
- [1>2, 3>1, 0>7]과 같이 연산이 실시된 후 이를 반환
x = np.array([1,3,0])
y = np.array([2,1,7])
x > y
#array([False, True, False])
# 두 배열의 shape이 다르기 때문에 error
y1 = np.array([2,1,7,9])
x > y1
2-1 ALL & ANY
- all 함수 : 배열 내부의 모든 값이 침을 때는 True, 하나라도 참이 아닐 경우에는 False 반환. (and 조건)
- any 함수 : 배열 내부의 값 중 하나라도 참을 때는 True, 모두 참이 아닐 경우에는 False 반환 (or 조건)
x= np.array([4,6,7,3,2])
x > 3
#array([ True, True, True, False, False])
print((x > 3).all()) #False
print((x > 3).any()) #True
print((x < 10).any()) #True
print((x < 10).all()) #True
print((x > 10).all()) #False
2-2 Index 반환 함수
- where 함수 : 배열이 boolean형으로 이루어졌을 때 참인 값들의 index를 반환
- => True/False 대신 True/False인 경우의 값을 지정할 수 있음
# np.where(condition) -> condition이 True인 index 값 반환
x = np.array([4,6,7,3,2])
np.where(x > 5)
#(array([1, 2]),)
# np.where(condition, [x, y]) -> condition이 True면 x, False면 y 반환
np.where(x >5, 0, 1)
#array([1, 0, 0, 1, 1])
2-3 정렬된 값의 Index를 반환해 주는 함수
- argsort: 배열 내 값들을 작은 순서대로 인덱스 반환
- argmax : 배열 내 값들 중 가장 큰 값의 인덱스 반환
- argmin : 배열 내 값들 중 가장 작은 값의 인덱스 반환
x = np.array([4,6,7,3,2])
print(np.argsort(x)) #[4 3 0 1 2]
print(np.argmax(x)) #2
print(np.argmin(x)) #4
3-1 Boolean Index
- 배열에 있는 값들을 반환할 특정 조건을 boolean형의 배열에 넣어서 추출
- 인덱스에 들어가는 배열은 boolean형이어야 함
- boolean형 배열과 추출 대상이 되는 배열의 구조가 같아야 함
x = np.array([4,6,7,3,2])
print(x > 3) #[ True True True False False]
cond = x > 3
x[cond] #array([4, 6, 7])
print(x.shape) #(5,)
print(cond.shape) #(5,)
3-2 Fancy Index
- 정수형 배열의 값을 사용하여 해당 정수의 인덱스에 위치한 값을 반환
- 인덱스 항목에 넣을 배열은 정수로만 구성되어야 함
- 정수 값의 범위는 대상이 되는 배열이 가지는 인덱스의 번위 내 대상이 되는 배열과 인덱스 배열의 shape이 같을 필요는 없음
x = np.array([4,6,7,3,2])
cond = np.array([1,2,0,2,2,2], int)
x[cond] #array([6, 7, 4, 7, 7, 7])
x = np.array([4,6,7,3,2])
cond = np.array([1,2,0,2,4,5], int)
x[cond]
# IndexError: index 5 is out of bounds for axis 0 with size 5
# cond의 요소 값이 x의 Index 범위를 넘어서기 때문에 Error
x.take(cond) # take함수로도 사용 가능
#array([6, 7, 4, 7, 7, 7])
x = np.array([[1,4], [9, 16]], int)
a = np.array([0, 1, 1, 1, 0, 0], int)
b = np.array([0, 0, 0, 1, 1, 1], int)
x[a, b]
#array([ 1, 9, 9, 16, 4, 4])
'Python > Numpy & Pandas' 카테고리의 다른 글
[Pandas] DataFrame 객체 생성과 변경 (0) | 2022.09.25 |
---|---|
[Pandas] Pandas의 개념 & Series 객체 생성하고 다루기 (0) | 2022.09.25 |
[Numpy] 배열 연산(산술 연산, 내적 연산, Broadcasting) (0) | 2022.09.25 |
[Numpy] 배열의 구조 변경 (reshape, flatten, newaxis) (0) | 2022.09.23 |
[Numpy] 배열 초기화&특정배열 생성(zeros, ones, full, eye, tri, empty, _like) (0) | 2022.09.22 |