Camparisons
x = np.array([1,2,3,77,34,-1,34])
x > 30
#array([False, False, False, True, True, False, True])
위처럼 x >30 연산을 하게 되면 numpy에서는 각각의 값을 비교해 boolean array로 반환해준다.
numpy 배열의 크기가 같을 때는 element간 비교결과를 Boolean array로 반환한다.
import numpy as np
a = np.array([1, 2, 3])
b = np.array([2, 2, 2])
print(a == b) # 출력: [False True False]
print(a != b) # 출력: [ True False True]
print(a < b) # 출력: [ True False False]
print(a > b) # 출력: [False False True]
print(a <= b) # 출력: [ True True False]
print(a >= b) # 출력: [False True True]
np.logical_and(a,b) | a,b 둘을 and연산한 boolean array 반환 |
np.logical_or(b,c) | a,b 둘을 or연산한 boolean array 반환 |
np.logical_not(b) | not 연산한 boolean array 반환 |
np.all(a) | a중 모두 참이어야 true반환 |
np.any(a) | a중 한개라도 true면 true반환 |
np.where(a >0, 3 , 2) | a>0보다 큰 것은 3으로 채워주고 그렇지 않은 것은 2로 채워주는 array 반환 |
np.where(a>0) | a >0인 index 반환 |
np.isnan(a) | a array의 각각이 Nan이면 true, Nan이 아니면 false 인 array 반환 |
np.isfinite(a) | a array의 값이 finite number이면 true, 아니면 fasle인 array 반환 |
np.argmax(a) | a array내 최댓값이 인덱스 반환 |
np.argmin(a) | a array 내 최솟값의 인덱스 반환(axis 설정가능) |
boolean index
- 특정 조건에 따른 값을 배열 형태로 추출한다.
import numpy as np
# 1부터 9까지의 정수를 갖는 3x3 배열 생성
a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
# 배열 a에서 5보다 큰 요소들만 선택하여 새로운 배열 생성
b = a[a > 5]
print(b) # 출력: [6 7 8 9]
위의 코드에서, a > 5는 3x3 boolean 배열을 반환합니다. 이 boolean 배열은 True와 False 값을 갖는데, 배열 a에서 5보다 큰 요소는 True로, 그 외의 요소는 False로 이루어져 있습니다. 이 boolean 배열을 a에 indexing하면 True인 요소들만 선택되어 새로운 1차원 배열 b가 생성됩니다.
import numpy as np
# 0부터 9까지의 정수를 갖는 1차원 배열 생성
a = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
# 배열 a에서 2의 배수인 요소들만 선택하여 새로운 배열 생성
b = a[a % 2 == 0]
print(b) # 출력: [0 2 4 6 8]
위의 코드에서, a % 2 == 0는 1차원 boolean 배열을 반환합니다. 이 boolean 배열은 True와 False 값을 갖는데, 배열 a에서 2로 나누어 떨어지는 요소는 True로, 그 외의 요소는 False로 이루어져 있습니다. 이 boolean 배열을 a에 indexing하면 True인 요소들만 선택되어 새로운 1차원 배열 b가 생성됩니다.
fancy index
array를 index value로 사용해서 값을 추출할 수 있다.
a = np.array([2,4,6,8])
b = np.array([0,0,3,2,1,0])
a[b] #array([2, 2, 8, 6, 4, 2])
a.take(b) #array([2, 2, 8, 6, 4, 2]) a[b]와 동일한 겨로가 출력
b를 인덱스 삼아 a의 요소들을 담은 list를 반환한다.
2차원 형태로도 가능하다.
import numpy as np
a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
# 행 인덱스가 [0, 2], 열 인덱스가 [1, 2]인 요소들을 선택하여 1차원 배열 생성
b = a[[0, 2], [1, 2]]
print(b) # 출력: [2 9]
위의 코드에서, a[[0, 2], [1, 2]]는 배열 a에서 (0, 1), (2, 2) 위치의 요소들을 선택하여 1차원 배열 b를 생성합니다.
'AI > Numpy' 카테고리의 다른 글
개요, NumPy 함수들, 축의 개념 (1) | 2023.03.11 |
---|