Cho một bàn nơi cột đầu tiên là giây đã qua một điểm tham chiếu nhất định và điều thứ hai là một đo lường tùy ý:làm mịn dữ liệu thời gian đột xuất lấy mẫu
6 0.738158581
21 0.801697222
39 1.797224596
49 2.77920469
54 2.839757536
79 3.832232283
91 4.676794376
97 5.18244704
100 5.521878863
118 6.316630137
131 6.778507504
147 7.020395216
157 7.331607129
176 7.637492223
202 7.848079136
223 7.989456499
251 8.76853608
278 9.092367123
...
Như bạn thấy, các phép đo được lấy mẫu tại các thời điểm bất thường . Tôi cần phải làm mịn dữ liệu bằng cách tính trung bình số đọc lên đến 100 giây trước mỗi phép đo (bằng Python). Vì bảng dữ liệu là rất lớn, nên một phương thức dựa trên trình vòng lặp thực sự được ưu tiên. Thật không may, sau hai giờ mã hóa tôi không thể tìm ra giải pháp hiệu quả và thanh lịch.
Có ai có thể giúp tôi không?
EDIT s
Tôi muốn một đọc vuốt cho từng đọc nguyên, và việc đọc vuốt là trở thành trung bình cộng của việc đọc liệu và bất kỳ những người khác trong vòng 100 (đồng bằng) giây trước . (John, bạn là đúng)
lớn ~ 1e6 - dòng 10e6 + cần phải làm việc với RAM chặt chẽ
Dữ liệu được xấp xỉ ngẫu nhiên đi bộ
Dữ liệu được sắp xếp
GIẢI PHÁP
Tôi đã thử nghiệm các giải pháp được đề xuất bởi J Machin và yairchu. Cả hai đều cho cùng một kết quả, tuy nhiên, trên tập dữ liệu của tôi, phiên bản của J Machin thực hiện theo cấp số nhân, trong khi đó yairchu là tuyến tính. Sau đây là thời gian thực hiện được đo bằng IPython của % timeit (ms):
data size J Machin yairchu
10 90.2 55.6
50 930 258
100 3080 514
500 64700 2660
1000 253000 5390
2000 952000 11500
Cảm ơn tất cả các bạn đã giúp đỡ.
có quá lớn để được xử lý trong các mảng có nhiều mảng không? Bạn có bao nhiêu món đồ? –
Là nội suy tuyến tính này để tìm các điểm bội số của 100? –
Nếu bạn có yêu cầu làm mịn, hãy xây dựng thêm một chút. Tôi đã thử một vài lần nhưng tôi không thể phân tích cú pháp mô tả này của bạn: "Tôi cần phải làm mịn dữ liệu bằng cách lấy trung bình số đọc lên đến 100 giây trước mỗi phép đo". – rix0rrr