C'est une chose courante, mais je l'ai tellement écrit que je vais écrire le code
Ne laissez True que N fois de suite pour numpy.array
En décalant et et, vous pouvez trouver deux points de départ consécutifs, et en décalant ou en décalant d'un, vous pouvez remplir jusqu'au point final avec True.
Si vous faites la partie et deux fois, vous trouverez 3 points de départ consécutifs, et si vous le faites 3 fois, vous trouverez 4 points de départ consécutifs, donc si vous écrivez à nouveau, vous pouvez trouver les points de départ consécutifs un nombre illimité de fois.
python
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
python
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)
Vous devriez maintenant obtenir une sortie similaire à ce qui suit
Recommended Posts