Mam dwie tablice 1D, jedną dla danych zmierzonych, a drugą dla lokalizacji. Na przykład, dane pomiarowe mogą być zdeterminowane temperaturą i drugą tablicę Wysokości pomiaru:Średnia z przedziału czasowego danych 1D
temp = np.asarray([10, 9.6, 9.3, ..., -20.3, -21.0]) # Temperature in celsius
height = np.asarray([129, 145, 167, ..., 5043, 5112]) # Height in meters
Jak widać, wysokość pomiarów nie jest w regularnych odstępach.
Chcę obliczyć średnią temperaturę w regularnie rozmieszczonych odstępach wysokości. Jest to pewnego rodzaju średnia ruchoma, ale rozmiar okna jest zmienny, ponieważ punkty danych w interwale zainteresowania nie zawsze są takie same.
Można to zrobić z pętli for w następujący sposób:
regular_heights = np.arange(0, 6000, 100) # Regular heights every 100m
regular_temps = []
for i in range(len(regular_heights)-1):
mask = np.logical_and(height > regular_heights[i], height < regular_heights[i+1])
mean = np.mean(temp[mask])
regular_temps.append(mean)
regular_temps = np.hstack((regular_temps))
nie podoba mi się takie podejście, że wiele, a ja zastanawiałem się, czy nie byłoby bardziej rozwiązanie „numpy-style”.
Czy chcesz "Przenoszenie średni" lub "temp średnią w regularnych odstępach"? To znaczy, jeśli masz N interwałów, chcesz N średnich, czy chcesz ciągłej średniej za pomocą ruchomego okna (które obejmuje zakres wysokości w każdej lokalizacji)? – tom10
Jak mówię w odpowiedzi na mój commnet do @elyase, prawdopodobnie potrzebuję najpierw średnika w regularnych odstępach, a następnie wygładzam go splajnem. Jednak średnia ruchoma może być również dobra w połączeniu z splajnem. –