Cho rằng tôi có hai vectơ sau:python: làm thế nào để tính toán phái sinh/Gradient
In [99]: time_index
Out[99]:
[1484942413,
1484942712,
1484943012,
1484943312,
1484943612,
1484943912,
1484944212,
1484944511,
1484944811,
1484945110]
In [100]: bytes_in
Out[100]:
[1293981210388,
1293981379944,
1293981549960,
1293981720866,
1293981890968,
1293982062261,
1293982227492,
1293982391244,
1293982556526,
1293982722320]
đâu bytes_in là một gia tăng chỉ truy cập, và time_index là một danh sách để timestamps unix (thời đại).
Mục tiêu: Điều tôi muốn tính là tốc độ bit.
Điều đó có nghĩa rằng tôi sẽ xây dựng một khung dữ liệu như
In [101]: timeline = pandas.to_datetime(time_index, unit="s")
In [102]: recv = pandas.Series(bytes_in, timeline).resample("300S").mean().ffill().apply(lambda i: i*8)
In [103]: recv
Out[103]:
2017-01-20 20:00:00 10351849683104
2017-01-20 20:05:00 10351851039552
2017-01-20 20:10:00 10351852399680
2017-01-20 20:15:00 10351853766928
2017-01-20 20:20:00 10351855127744
2017-01-20 20:25:00 10351856498088
2017-01-20 20:30:00 10351857819936
2017-01-20 20:35:00 10351859129952
2017-01-20 20:40:00 10351860452208
2017-01-20 20:45:00 10351861778560
Freq: 300S, dtype: int64
Câu hỏi: Bây giờ, những gì là lạ, tính toán gradient bằng tay mang lại cho tôi:
In [104]: (bytes_in[1]-bytes_in[0])*8/300
Out[104]: 4521.493333333333
mà là giá trị đúng ..
trong khi tính toán độ dốc với gấu trúc cho tôi
In [124]: recv.diff()
Out[124]:
2017-01-20 20:00:00 NaN
2017-01-20 20:05:00 1356448.0
2017-01-20 20:10:00 1360128.0
2017-01-20 20:15:00 1367248.0
2017-01-20 20:20:00 1360816.0
2017-01-20 20:25:00 1370344.0
2017-01-20 20:30:00 1321848.0
2017-01-20 20:35:00 1310016.0
2017-01-20 20:40:00 1322256.0
2017-01-20 20:45:00 1326352.0
Freq: 300S, dtype: float64
mà không giống như trên, 1.356.448,0 khác với 4521,493333333333
Ông có thể soi sáng trên những gì tôi đang làm sai?
thử 'recv.diff()' là lời gọi hàm 'recv.diff' là tham chiếu đến phương thức' diff' ;-) – MaxU
@MaxU cảm ơn :) bạn có điểm! vẫn thấy kết quả khác nhau. Tôi đã chỉnh sửa câu hỏi gốc với kết quả mới. – iamsterdam
Bạn đang quên các bước bổ sung mà tôi cho là - 'recv.diff(). Mul (8) .div (300)' –