목록과 NumPy 배열에서 부울 연산과 비트 연산의 동작의 차이점은 무엇입니까?
다음 예제와 같이 Python에서 &
vs and
를 올바르게 사용하는 것에 대해 혼란 스럽습니다 .
mylist1 = [True, True, True, False, True]
mylist2 = [False, True, False, True, False]
>>> len(mylist1) == len(mylist2)
True
# ---- Example 1 ----
>>> mylist1 and mylist2
[False, True, False, True, False]
# I would have expected [False, True, False, False, False]
# ---- Example 2 ----
>>> mylist1 & mylist2
TypeError: unsupported operand type(s) for &: 'list' and 'list'
# Why not just like example 1?
>>> import numpy as np
# ---- Example 3 ----
>>> np.array(mylist1) and np.array(mylist2)
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
# Why not just like Example 4?
# ---- Example 4 ----
>>> np.array(mylist1) & np.array(mylist2)
array([False, True, False, False, False], dtype=bool)
# This is the output I was expecting!
이 답변 하고 ,이 대답은 나를 이해 도움이 and
부울 동작하지만, &
비트 연산이다.
개념을 더 잘 이해하기 위해 비트 단위 연산 에 대해 읽었 지만 위의 4 가지 예를 이해하기 위해 해당 정보를 사용하는 데 어려움을 겪고 있습니다.
즉 괜찮지 만, 나는 아직도 내가 어떻게 / 사용해야하는 이유 때 /에 대해 혼란 스러워요 그래서 예 4, 내 원하는 출력를 알려준 and
대&
. 왜리스트와 NumPy 배열이이 연산자들과 다르게 동작합니까?
부울 연산과 비트 연산의 차이점을 이해하여 왜 목록과 NumPy 배열을 다르게 처리하는지 설명 할 수 있습니까?
mylist1 and mylist2
와 동일한 결과를 출력하지 않습니다 mylist2 and mylist1
.
np.bitwise_and()
와np.logical_and()
친구 혼동을 피하기 위해.