본문 바로가기

프로그래머스 데브 코스/TIL

[6기] 프로그래머스 인공지능 데브코스 10일차 TIL

0910

3주차-Day2) Numpy 실습

bool 인덱싱

import numpy as np

np.random.seed(42)

arr = np.random.randint(0, 100, size=(5, 6, 3))

# arr에서 10보다 크고 20보다 작거나 같은 요소들만 추출해봅시다.
result = arr[(arr > 10) & (arr <= 20)]

print(result)

 

관계 연산

import numpy as np

np.random.seed(42)

A = np.random.randint(0, 100, size=(3, 3, 3))

# A안에 52 또는 1인 요소와 같은 위치에는 True, 다른 곳에는 False인 배열을 result에 넣어주세요.
result = ((A == 52) | (A == 1))

print(result)

 

Use a.any() or a.all()

Numpy에서의 'bool' 조건문 관련 오류에 대해 알게 된 것 정리
# and나 or을 썼을 때 아래의 오류가 나오는 이유 
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
  • 여러 개의 조건식을 작성할 때 and와 or로 넣어주면 에러가 발생
    and는 Python의 예약어입니다. and의 피연산자에는 numpy.ndarray가 아닌 bool 타입의 값이 와야 됩니다.
    Numpy에서는 any() 또는 all()메소드를 사용하여 bool 값으로 변경하라고 에러가 발생한 것입니다
  • 즉, 배열에 관한 여러 조건식을 결합할 때는 and, or가 아닌 &, |를 사용해야 합니다.