Podano dwie tablice o równej długości, jeden Data Holding, jednego gospodarstwa wyniki ale początkowo ustawiony na zero, np:Python/NumPy: wdrożenie sumę biegu (ale nie całkiem)
a = numpy.array([1, 0, 0, 1, 0, 1, 0, 0, 1, 1])
b = numpy.array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
ja jak obliczyć sumę wszystkich możliwych podzbiorów trzech sąsiednich elementów w. Jeżeli suma wynosi 0 lub 1, trzy odpowiadające im elementy w b pozostaną niezmienione; Tylko wtedy, gdy suma przekracza 1 są trzy odpowiadające im elementy b ustawiony na 1, tak aby po obliczenia b się
array([0, 0, 0, 1, 1, 1, 0, 1, 1, 1])
prosty pętla osiągnąć:
for x in range(len(a)-2):
if a[x:x+3].sum() > 1:
b[x:x+3] = 1
Następnie b ma pożądana forma.
Muszę to zrobić dla dużej ilości danych, więc szybkość jest problemem. Czy w NumPy jest szybszy sposób przeprowadzenia powyższej operacji?
(Rozumiem, że jest to podobne do splotu, ale nie do końca takie samo).
Dokładnie to, co zamierzałem zasugerować, ale 30 sekund szybciej. ;) –
Na OP "a", jest to faktycznie wolniej, ale w miarę jak tablica rośnie, wydaje się, że jest znacznie lepsza. –
+1: Funkcje NumPy są tutaj bardzo przydatne. Elegancki i skuteczny kod. – EOL