티스토리 뷰

 

 

파이썬에서 숫자는 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
댓글