Tôi có hai mảng 1D, một cho dữ liệu được đo và một cho vị trí. Ví dụ: dữ liệu được đo có thể là nhiệt độ và dãy kia có chiều cao của phép đo:Trung bình khoảng thời gian của dữ liệu 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
Như bạn thấy, chiều cao của phép đo không được đặt cách nhau đều đặn.
Tôi muốn tính toán nhiệt độ trung bình theo khoảng cách đều nhau. Đây là một số loại di chuyển trung bình, nhưng kích thước cửa sổ là biến, bởi vì các điểm dữ liệu bên trong khoảng thời gian quan tâm không phải lúc nào cũng giống nhau.
Điều này có thể được thực hiện với một vòng lặp for theo cách sau:
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))
tôi không thích phương pháp này mà nhiều và tôi đã tự hỏi nếu có sẽ là một nhiều hơn "NumPy kiểu" giải pháp.
Bạn có muốn có một "đường trung bình" hoặc "temp trung bình trong khoảng thời gian đều đặn cách nhau"? Tức là, nếu bạn có N khoảng thời gian, bạn muốn N trung bình, hoặc bạn có muốn một mức trung bình liên tục bằng cách sử dụng một cửa sổ di chuyển (kéo dài một phạm vi chiều cao tại mỗi địa điểm)? – tom10
Như tôi nói trong commnet của tôi để trả lời của @elyase, tôi có thể cần phải di đầu tiên có nghĩa là trong khoảng cách đều đặn và sau đó mịn nó với một spline. Tuy nhiên, mức trung bình động cũng có thể kết hợp tốt với đường spline. –