[PYTHON] Rechercher numpy.array pour Vrai consécutif

C'est une chose courante, mais je l'ai tellement écrit que je vais écrire le code

Chose que tu veux faire

Ne laissez True que N fois de suite pour numpy.array image.png

manière

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. image.png

1. Préparez la matrice

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

2. Ne laissez que des zones continues

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

Rechercher numpy.array pour Vrai consécutif
Rechercher le nom de la fonction OpenCV
Rechercher des chaînes dans les fichiers
[Excel] Recherche de valeurs en double (caractères)
Résumé de la recherche Bisection pour les professionnels de la concurrence
Recherche de mots composés à phase identique avec opencv
Rechercher efficacement les paramètres optimaux (Optuna)
Vectoriser les phrases et rechercher des phrases similaires