반응형
MATLAB에서는 특정 조건을 충족하는 값의 인덱스를 쉽게 찾을 수 있습니다.
>> a = [1,2,3,1,2,3,1,2,3];
>> find(a > 2) % find the indecies where this condition is true
[3, 6, 9] % (MATLAB uses 1-based indexing)
>> a(find(a > 2)) % get the values at those locations
[3, 3, 3]
파이썬에서 이것을 수행하는 가장 좋은 방법은 무엇입니까?
지금까지 다음과 같이 생각했습니다. 값을 얻으려면 :
>>> a = [1,2,3,1,2,3,1,2,3]
>>> [val for val in a if val > 2]
[3, 3, 3]
그러나 각 값의 색인을 원한다면 조금 더 복잡합니다.
>>> a = [1,2,3,1,2,3,1,2,3]
>>> inds = [i for (i, val) in enumerate(a) if val > 2]
>>> inds
[2, 5, 8]
>>> [val for (i, val) in enumerate(a) if i in inds]
[3, 3, 3]
특히 임의의 조건 ( 'val> 2'뿐만 아니라)에 대해 Python에서이를 수행하는 더 좋은 방법이 있습니까?
NumPy에서 MATLAB 'find'에 해당하는 함수를 찾았지만 현재 해당 라이브러리에 액세스 할 수 없습니다.
해결 방법
def indices(a, func):
return [i for (i, val) in enumerate(a) if func(val)]
a = [1, 2, 3, 1, 2, 3, 1, 2, 3]
inds = indices(a, lambda x: x > 2)
>>> inds
[2, 5, 8]
numpy를 모두로드하지 않고도 Matlab 예제에 조금 더 가깝습니다.
참조 페이지 https://stackoverflow.com/questions/5957470
반응형
'파이썬' 카테고리의 다른 글
파이썬 sum ()과 같은 함수는 무엇입니까? 생성물()? (0) | 2020.10.03 |
---|---|
파이썬 Python datetime을 타임 스탬프로 변환하고 UTC로 다시 변환하면 여전히 현지 시간대를 사용합니다. (0) | 2020.10.03 |
파이썬 Python을 사용하여 웹 사이트 만들기 시작 (0) | 2020.10.03 |
파이썬 python3에서 dateutil.parser를 대체하는 것은 무엇입니까? (0) | 2020.10.03 |
파이썬 BaseHTTPRequestHandler.do_POST ()에서 HTTP 메시지 본문을 추출하는 방법은 무엇입니까? (0) | 2020.10.03 |
댓글