Es ist eine häufige Sache, aber ich habe es so oft geschrieben, dass ich den Code aufschreibe
Lassen Sie für numpy.array nur N Mal hintereinander True
Durch Verschieben und und finden Sie zwei aufeinanderfolgende Startpunkte, und durch Verschieben oder Verschieben um einen können Sie bis zum Endpunkt mit True füllen.
Wenn Sie das und den Teil zweimal ausführen, finden Sie 3 aufeinanderfolgende Startpunkte, und wenn Sie es 3 Mal ausführen, finden Sie 4 aufeinanderfolgende Startpunkte. Wenn Sie dies also erneut schreiben, können Sie die aufeinanderfolgenden Startpunkte beliebig oft finden.
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)
Sie sollten jetzt eine Ausgabe ähnlich der folgenden erhalten
Recommended Posts