numpy.array에서 연속적으로 True 인 것을 찾습니다.
하고 싶은 일
numpy.array에 대해서 N회 연속해서 True의 곳만 남깁니다
방법
하나씩 벗어나서 두 번 연속하는 원점을 찾고 하나씩 뒤집어서 끝까지 True로 채웁니다.
and의 부분을 2회 하면 3개의 연속한 기점, 3회 하면 4개의 연속한 기점을 찾아낼 수 있으므로, 이것을 재기로 써 주면 임의의 횟수 연속한 부분을 찾아낼 수 있습니다.
1. 행렬 준비
파이썬
import numpy as np
arr = np.array([[True, False, False, True, False, False, False],
[False, False, True, True, True, True, False],
[False, True, True, False, True, False, True ],
[False, False, False, False, True, True, False],
[True, True, False, False, False, False, False]])
arr
2. 연속하는 곳만 남긴다
파이썬
def is_continuous(arr, left_cnt):
if left_cnt >= 1:
arr2 = arr[:, :-1] & arr[:, 1:]
arr2 = is_continuous(arr2, left_cnt - 1)
else:
arr2 = arr
return arr2
def check_continuous(arr, continuous_cnt):
arr2 = is_continuous(arr, continuous_cnt - 1)
arr3 = np.tile(np.full(continuous_cnt - 1, False), arr2.shape[0]).reshape(-1, arr2.shape[0]).T
arr2 = np.hstack([arr2, arr3])
for _ in range(continuous_cnt - 1):
arr2[:, 1:] = arr2[:, 1:] | arr2[:, :-1]
return arr2
print(arr)
check_continuous(arr, 2)
이제 다음과 같은 출력을 얻을 수 있습니다.
Reference
이 문제에 관하여(numpy.array에서 연속적으로 True 인 것을 찾습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/studio_haneya/items/bce843eacb345dfaa97d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)