Mam tablicę numpy taką jak ta [1,1,1,-1,-1,1,-1,1,1,-1,-1,-1,1,-1]
Chciałbym znaleźć długość najdłuższej z następujących po sobie serii 1s lub -1s. Na przykład, powinno być 3znajdź długość najdłuższej z następujących po sobie serii liczb
Odpowiedz
w czystym Pythonie
>>> from itertools import groupby
>>> L = [1,1,1,-1,-1,1,-1,1,1,-1,-1,-1,1,-1]
>>> max(sum(1 for i in g) for k,g in groupby(L))
3
Nie można uzyskać prostsze niż to. +1 –
Dobre wykorzystanie narzędzi itertools! – jszakmeister
@jszakmeister, za każdym razem, gdy problem zawiera słowo "consecutive", 'groupby()' powinno być pierwszą rzeczą, którą masz na myśli. –
podobne do odpowiedzi przez @AlexMartelli
>>> import numpy as np
>>> nums = np.array([1,1,1,-1-1,1,-1,1,1,-1,-1,-1,1,-1])
>>> run_ends = np.where(np.diff(nums))[0] + 1
>>> np.diff(np.hstack((0, run_ends, nums.size))).max()
3
- 1. Wyświetlanie wartości następujących po sobie
- 2. Python: Długość najdłuższej podlisty?
- 3. Pobieranie próbek w r bez następujących po sobie identycznych cyfr
- 4. Jak sprawdzić brakujący numer z serii liczb?
- 5. Znajdź najwcześniejszy z serii dat JavaScriptu
- 6. RegEx, aby sprawdzić 3 lub więcej następujących po sobie wystąpień znaku
- 7. Znajdź długość tablicy 2D Python
- 8. Zdobądź medianę z serii liczb za pomocą Apache Commons Math
- 9. Dopasowywanie UIView po załadowaniu z serii ujęć
- 10. znaleźć pozycję początkową najdłuższej sekwencji 1-
- 11. Znajdź najmniejszą spośród 3 liczb w C++
- 12. zapełnianie następujących użytkowników mongoose
- 13. Znajdź minimalne wartości spośród 5 liczb całkowitych?
- 14. Znajdź indeksy nieparzystych liczb w wektorze całkowitej
- 15. Radzenie sobie z czasami i po północy
- 16. MySQL Określanie najdłuższej długości VarChar
- 17. Wydłuż długość plasterka po lewej
- 18. Jak ograniczyć długość EditText do 7 liczb całkowitych i 2 miejsc po przecinku?
- 19. Algorytmy genetyczne: jak radzić sobie z krzyżowaniem w problemach "podzbiorów"?
- 20. Wyszukiwanie najdłuższej listy na liście w Pythonie
- 21. Jak zorganizować klasy C#, które dziedziczą po sobie, ale także mają właściwości, które dziedziczą po sobie?
- 22. Znajdź największy 10% liczb w tablicy w kolejności
- 23. Znajdź wszystkie kombinacje liczb, które sumują się do celu.
- 24. Tworzenie wideo z serii zdjęć?
- 25. Po co zawracać sobie głowę inicjatorami? (.net)
- 26. Tabela danych R zalecany sposób radzenia sobie z czasem Data
- 27. Znajdź sumę liczb pierwszych poniżej dwóch milionów. Projekt euler, C
- 28. Zmienianie nazwy serii w pandach
- 29. resampling danych nie z serii czasowych
- 30. Znajdź skrzyżowanie z numerem linii
Czy chcesz 'rozwiązanie numpy' lub roztwór czystego-python jest w porządku ? To banalne użycie 'itertools.groupby' ... – Bakuriu
Więc wynik w tym przypadku powinien wynosić 2 (-1-1) w prawo? ... ord jest tam tylko", "brakujące i faktycznie chcesz 3 (1,1 , 1)? – pypat
@Bururiu wszystkie rozwiązania z czystym pythonem są małymi rozwiązaniami. Jedyna zmiana polega na tym, że czasami rozwiązania specyficzne dla numpy są znacznie ładniejsze lub znacznie szybsze. –