HOWTO · Python
Python에서 부울의 부정 얻기
이 자습서에서는 Python에서 불리언 값을 부정하는 방법을 보여줍니다.
이 페이지의 내용
Python의 스칼라 표현식에서 참과 거짓을 반전하려면 not 연산자를 사용합니다. NumPy 불리언 배열에는 ~ 또는 numpy.logical_not() 같은 요소별 연산을 사용하세요. NumPy의 bitwise_not()과 invert() 함수도 불리언 배열의 각 요소를 반전합니다.
Python에서 not 연산자로 불리언 값 반전하기
not 연산자는 먼저 피연산자의 참·거짓을 판별한 다음 불리언을 반환합니다. True는 False가 되고 False는 True가 됩니다. 불리언이 아닌 값도 받을 수 있습니다. 예를 들어 1은 참으로 평가되므로 not 1은 False입니다. 이 결과는 정수 0이 아니라 불리언 False입니다.
다음 예제는 조건의 참·거짓을 반전하고 그 결과인 불리언을 출력합니다.
a = 1
print(bool(a))
print(not a)
Python에서 operator 모듈의 operator.not_() 함수로 불리언 값 반전하기
표준 라이브러리의 operator.not_() 함수는 Python의 not 연산자와 같은 기능을 호출 가능한 형태로 제공합니다. 인수의 참·거짓을 판별하고 불리언을 반환합니다. map()으로 리스트의 각 항목에 적용하는 경우처럼 연산을 함수로 전달해야 할 때 사용할 수 있습니다.
import operator
values = [True, True, False, True, False]
print(operator.not_(True))
print(list(map(operator.not_, values)))
map()은 전달받은 함수를 반복 가능한 객체의 각 항목에 적용합니다. 이 예제의 리스트 항목은 모두 불리언이며, 결과 리스트에는 각 항목의 반대 값이 들어갑니다.
Python에서 NumPy 배열의 불리언 값을 ~ 연산자로 반전하기
불리언 dtype을 가진 NumPy 배열에서 ~ 연산자는 비트 단위 반전을 요소별로 적용합니다. 각 True는 False로, 각 False는 True로 바뀝니다.
import numpy as np
values = np.array([True, True, False, True, False])
print(~values)
이 불리언 배열 동작은 마스크의 참·거짓을 반전할 때 유용합니다. Python 정수는 불리언 값이 아닙니다. 정수에 ~를 적용하면 정수 비트 단위 반전이 수행되므로, 스칼라의 참·거짓을 부정하는 용도로 사용하면 안 됩니다.
NumPy 라이브러리의 bitwise_not() 함수로 불리언 값 반전하기
numpy.bitwise_not()은 비트 연산을 함수 형태로 제공합니다. 불리언 배열에서는 각 요소를 반전하며, ~와 동일한 요소별 불리언 결과를 만듭니다.
import numpy as np
values = np.array([True, True, False, True, False])
print(np.bitwise_not(values))
코드에서 이름이 명확한 NumPy 연산을 사용하는 편이 적절하다면 이 함수를 선택하세요. NumPy 불리언 값 하나에도 사용할 수 있습니다.
Python에서 NumPy 라이브러리의 invert() 함수로 불리언 값 반전하기
numpy.invert()는 NumPy의 요소별 비트 단위 반전을 가리키는 또 다른 이름입니다. 불리언 배열에서는 bitwise_not() 및 ~와 동작이 겹칩니다.
import numpy as np
values = np.array([True, True, False, True, False])
print(np.invert(values))
코드에서 연산을 가장 명확하게 나타내는 표기를 선택하세요. ~와 마찬가지로 정수 데이터에 invert()를 적용하면 불리언의 참·거짓 부정이 아니라 비트 단위 반전이 수행됩니다.
Python에서 NumPy 라이브러리의 logical_not() 함수로 불리언 값 반전하기
numpy.logical_not()은 논리적 부정을 요소별로 수행합니다. 불리언 배열에서는 앞서 설명한 비트 단위 반전 함수들과 같은 값을 만들며, 함수 이름은 논리적 참·거짓 연산임을 드러냅니다.
import numpy as np
values = np.array([True, True, False, True, False])
print(np.logical_not(values))
Python 스칼라 표현식에는 not을 사용하고, 불리언 배열의 각 요소를 반전하려면 이에 대응하는 결과를 제공하는 NumPy 연산을 사용하세요.