np.any(조건) - 배열의 데이터 중 조건과 맞는 데이터가 있으면 True 전혀 없으면 False
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
np.any(arr > 5)
True
np.any(arr < 0)
False
np.all(조건) - 배열의 모든 데이터가 조건과 맞으면 True 하나라도 다르면 False
np.all(arr > 5)
False
np.all(arr < 10)
True
배열의 같은 위치에 있는 요소간의 비교
배열의 shape이 같아야 함
비교연산자 ==, <, > 로 배열 요소 비교
arr1 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
arr2 = np.array([[1, 2, 3], [1, 5, 7], [6, 8, 9]])
arr1 == arr2
array([[ True, True, True],
[False, True, False],
[False, True, True]])
arr1 > arr2
array([[False, False, False],
[ True, False, False],
[ True, False, False]])
np.any(조건)을 쓰지 않고 배열의 함수로 any()를 쓰게 되면
배열의 데이터 중 True나 0이 아닌 숫자가 있으면 True, 하나라도 없으면 False 반환
(arr1 > arr2).any()
True
np.all(조건)을 쓰지 않고 배열의 함수로 all()를 쓰게 되면
배열의 모든 데이터가 0이 아닌 숫자 이거나 True일 때 True를 반환. 하나라도 0 이나 False이면 False 반환
(arr1 > arr2).all()
False
shape이 다른 배열끼리 비교하면 value error 발생
arr1 = np.array([1, 2, 3, 4, 5, 6])
arr2 = np.array([[1, 2, 3], [1, 5, 7]])
arr1 > arr2
ValueError: operands could not be broadcast together with shapes (6,) (2,3)
np.where()
np.where(조건, True 일 때 출력값, False 일 때 출력값)
arr = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
np.where(arr > 4, arr, 0)
array([[0, 0, 0],
[0, 5, 6],
[7, 8, 9]])
요소가 4보다 크면 arr(그대로). 4보다 작으면 0으로 변환하여 반환
np.where(arr > 4, 0, arr+1)
array([[2, 3, 4],
[5, 0, 0],
[0, 0, 0]])
요소가 4보다 크면 0으로 4보다 작으면 원래 요소에 +1 하여 반환
np.where(조건) 조건만 쓰면 조건에 맞는 데이터의 인덱스를 반환
np.where(arr > 4)
(array([1, 1, 2, 2, 2], dtype=int64),
array([1, 2, 0, 1, 2], dtype=int64))
반환되는 튜플에서 첫번째 요소인 [1, 1, 2, 2, 2]는 행
반환되는 튜플에서 두번째 요소인 [1, 2, 0, 1, 2]는 열
즉 (1,1), (1,2), (2,0), (2,1), (2,2) 인덱스의 요소가 4보다 큰 데이터임을 나타냄
arr = np.array([1, 2, 3, 4, 5])
np.where(arr1 > 2)
(array([2, 3, 4], dtype=int64),)
1차원 배열에서는 2번째, 3번째, 4번째 값이 조건에 만족하는 데이터의 인덱스임
np.isnan(arr) - 배열의 데이터 중 NaN 값인 요소는 True 아니면 False로 변환
NaN은 Not a Number를 의미
arr = np.array([[1, np.NaN, 3],
[np.NaN, 5, 6]])
np.isnan(arr)
array([[False, True, False],
[ True, False, False]])
np.isfinite(arr) - 배열의 데이터 중 셀수 있는 데이터를 True 아니면 False로 변환
arr = np.array([[1, np.inf, 3],
[np.NaN, 5, 6]])
np.isfinite(arr)
array([[ True, False, True],
[False, True, True]])
np.inf, np.NaN, np.NINF 등을 False로 변환한다.
np.argmax(arr) - 배열의 데이터 중 최대값의 인덱스를 반환
np.argmin(arr) - 배열의 데이터 중 최소값의 인덱스를 반환
arr = np.array([[10, 2, 3],
[4, 50, 6]])
np.argmax(arr)
4
1차원 배열로 생각한 인덱스를 반환
np.argmax(arr, axis=1)
array([0, 1], dtype=int64)
axis=1 일 때 행마다 최대값인 인덱스를 반환
10, 2, 3 중 최대값은 10이기 때문에 10의 인덱스 0 반환
4, 50, 6 중 최대값은 50이기 때문에 50의 인덱스 1 반환
np.argmax(arr,axis=0)
array([0, 1, 1], dtype=int64)
axis=0 일 때 열마다 최대값인 인덱스를 반환
10, 4 중 최대값은 10이기 때문에 10의 인덱스 0 반환
2, 50 중 최대값은 50이기 때문에 50의 인덱스 1 반환
3, 6 중 최대값은 6이기 때문에 50의 인덱스 1 반환
argmin()은 최소값을 구하는 함수로 argmax()와 동일한 방법으로 사용됨
'파이썬 > Numpy' 카테고리의 다른 글
Numpy 사칙연산, Transform, 브로드캐스팅 (0) | 2019.08.08 |
---|---|
Numpy 연산(sum, mean, std, exp, vstack, hstack)과 axis의 의미 (0) | 2019.08.07 |
Numpy 배열 생성 방법(arange, zeros, ones, random) (0) | 2019.08.07 |
Numpy 요소선택 인덱싱, 슬라이싱 (indexing, slicing) (0) | 2019.08.07 |
Numpy shape 변환 (reshape, flatten) (1) | 2019.08.07 |
댓글