że mam następującą listę numerów:Krotki zamkniętych ciągłych odstępach
my_array = [0, 3, 4, 7, 8, 9, 10, 20, 21, 22, 70]
chciałbym znaleźć każdy zamknięty przedział zawierający kolejnych liczb całkowitych bez przerw w tej liście. Jeśli dla dowolnej liczby na liście istnieje wiele takich interwałów, my zachowujemy tylko największy takich interwałów. Prawidłowa odpowiedź powyżej powinny być:
[0, 0]
[3, 4]
[7, 10]
[20, 22]
[70, 70]
Aby to zobaczyć, trzeba pamiętać, na przykład:
Zamknięty przedział
[0,0]
zawiera całkowitą0
nie zawiera braków, a żaden z jego członków są zawarte w każdy inny zamknięty interwał.Zamknięty przedział
[3,4]
nie zawiera przerw, a jego elementy nie są zawarte w żadnym innym zamkniętym interwale bez przerw, które są większe od siebie.
Jak mogę to zrobić w numpy? Zacząłem pisać algorytm, który używa np.diff(my_array)
do wykrywania przejść w tablicy, ale zawodzi w przypadku narożnych przypadków, takich jak interwały zawierające tylko jeden element.
jak zdefiniować, każda zamknięta ciągła przerwa ??, co jest regułą ?? – Hackaholic
@Hackaholic I znacznie rozszerzyłem OP, aby wyjaśnić, co mam na myśli. daj mi znać, jeśli nadal jest niejasna. –
Mam to teraz, teraz jasne, – Hackaholic