티스토리 뷰
파이썬에서 숫자는 chained comparison이 되는데
numpy.ndarray는 안된다.
게으른 파이썬 녹화하다가 즉흥적으로 궁금해져서 해봤는데 막혀서 당황했다. 의미적으로는 되어야 할 것 같은데 왜 막아놨지? 궁금해졌다. 챗gpt한테 물어봤으나 뻘소리만 해대길래 검색해봤다. 검색어는 "ndarray chained comparison". 어떤 stackoverflow의 답변을 요약해보면,
• PEP 535에서 제안되었으나 연기되어 있는 상태임
• 파이썬에서 아래 코드는
2 < arr < 6
• 아래와 같이 해석됨
2 < arr and arr < 6
• 논리 연산자 and는 피연산자에 bool을 입힘
• 그런데 ndarray는 요소가 2개 이상이면 bool을 입히지 못함 (왜 못하게 해놨지?)
• 여튼 해결책으로 bitwise or인 &를 쓰거나 np.logical_and를 써야 함
PEP-535도 읽어보려 했으나 무슨 말인지 모르겠어서 패스한다.
끗.
'python' 카테고리의 다른 글
list.extend와 list.iadd의 차이 (0) | 2024.07.07 |
---|---|
syntax sugar in python (0) | 2024.06.03 |
게으른 예외처리는 독이 될 수도 있다. (0) | 2024.05.17 |
매트랩 fprintf와 파이썬 f-string (0) | 2023.09.04 |
파이썬 정규식 (6) | 2023.03.31 |
댓글