반응형
목표
배열을 검사해주는 any()
와 all()
메소드에 대해 살펴봅시다.
any() 메소드
any()
메소드는 주어진 배열에 True
가 하나라도 있으면 True
를 반환하고, True
가 하나도 없다면 False
를 반환합니다. 예시로 배열에 4 이상의 수가 있는지 검사하는 코드를 살펴봅시다.
import numpy as np
A = np.array([1, 2, 3, 4, 5, 4, 3, 2, 1])
print(A >= 4)
print()
print((A >= 4).any())
[False False False True True True False False False]
True
배열 A에는 4 이상의 수가 4, 5, 4로 총 3개가 존재합니다. 배열에 관계 연산자를 사용하여 4 이상의 수는 True
, 4 미만의 수는 False
인 배열을 얻습니다. 그 후 any()
메소드를 통해서 하나라도 True
가 있는지 검사합니다. 위 A에서 관계 연산을 통해 얻은 배열에는 1개 이상(3개)의 True
가 존재하므로 any()
메소드의 결과는 True로 나옵니다.
all() 메소드
all()메소드는 주어진 배열의 모든 요소가 True라면 True를 반환하고, 하나라도 False가 있다면 False를 반환합니다. 위에서 살펴본 코드에 any() 대신 all()을 넣어보겠습니다.
import numpy as np
A = np.array([1, 2, 3, 4, 5, 4, 3, 2, 1])
print(A >= 4)
print()
print((A >= 4).all())
[False False False True True True False False False]
False
any()
를 사용했을 때와 다르게 False
가 출력된 것을 확인할 수 있습니다. 즉, any()
는 관계 연산자로 연산한 배열에 True
가 존재하기 때문에 True
를 반환했습니다. 그러나 all()
는 모든 요소가 True
가 아니고 False
인 요소들도 존재하기 때문에 False
를 반환합니다.
그럼 오른쪽 코드의 주석으로 참고하여 빈칸을 채우며 any(), all()
메소드를 연습해봅시다.
import numpy as np
np.random.seed(42)
arr = np.random.randint(0, 100, size=(3, 3, 3))
print(arr)
# arr에 52 또는 1이 있는지 확인해봅시다.
result1 = ((arr==52) | (arr==1)).any()
print(result1)
# arr[0, :, :]에 요소들이 모두 20 이상의 수를 가지고 있는지 확인해봅시다.
result2 = (arr[0,:,:] >= 20).all()
print(result2)
[[[51 92 14]
[71 60 20]
[82 86 74]]
[[74 87 99]
[23 2 21]
[52 1 87]]
[[29 37 1]
[63 59 20]
[32 75 57]]]
True
False
'AI_Bootcamp' 카테고리의 다른 글
4주차 Day16 Numpy 심화 실습 1 (0) | 2022.01.24 |
---|---|
Numpy 심화 실습 chap5 브로드캐스팅 3 (0) | 2022.01.21 |
3주차 Day15 Numpy 실습 V (0) | 2022.01.21 |
[MYSQL] INNER JOIN, LEFT JOIN 예제문제 (0) | 2022.01.21 |
Numpy 심화 실습 chap4 브로드캐스팅 2 (0) | 2022.01.20 |