배열에 True 값이있을 때마다 배열의 다음 n 항목을 True로 만드는 가장 Pythonic 방법은 무엇입니까?

톰 맥린

부울 배열이 있습니다.

[False, False, True, True, False, True, False, False, False]

True 값이있을 때마다 배열의 다음 n 개 요소를 True로 만들고 싶습니다. 이 경우 n = 2를 선택하면이 배열은

[False, False, True, True, True, True, True, True, False]

for 루프를 사용하지 않고 이것을 수행하는 가장 비단뱀적인 방법은 무엇입니까?

폴 팬저

빠른 방법은 다음을 사용하는 것입니다 np.convolve.

rng = np.random.default_rng()
a = rng.integers(0,4,20)<1
a
# array([False, False, False, False, False, False, False, False,  True,
#        False, False,  True, False, False, False, False,  True, False,
#        False, False])
n = 3
np.convolve(a,np.ones(n+1,bool),"full")[:-n]
# array([False, False, False, False, False, False, False, False,  True,
#        True,  True,  True,  True,  True,  True, False,  True,  True,
#        True,  True])

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관