假设我有这个代码:
import numpy as np
import time
from datetime import datetime
class Measurements():
def __init__(self, time_var, value):
self.time_var = time_var
self.value = value
a = np.array([ Measurements('30-01-2017 12:02:15.880922', 100),
Measurements('30-01-2017 12:02:16.880922', 100),
Measurements('30-01-2017 12:02:17.880922', 110),
Measurements('30-01-2017 12:02:18.880922', 99),
Measurements('30-01-2017 12:02:19.880922', 96)])
b = np.array([ Measurements('30-01-2017 12:02:15.123444', 10),
Measurements('30-01-2017 12:02:18.880919', 12),
])
所以,我有5个a测量值和2个b测量值
我想,通过使用a
作为基,找到在a
发生的特定时间丢失的b
值。在
因此,最后的b
将始终具有a
时间值和长度(对于时间,我考虑使用time.mktime(datetime.strptime(s, "%d-%m-%Y %H:%M:%S.%f").timetuple())
以秒为单位返回时间)
因此,b
将是:
现在,我不知道该怎么处理。在
一种想法是首先执行interp
as here,并将b的长度扩展为与a相等
或使用interp1d
(更灵活):
from scipy import interpolate
a = np.array([100, 123, 123, 118, 123])
b = np.array([12, 11, 14, 13])
b_interp = interpolate.interp1d(np.arange(b.size),b, kind ='cubic', assume_sorted=False)
b_new = b_interp(np.linspace(0, b.size-1, a.size))
但是,如何处理时间呢?在
以下是您问题的解决方案:
scipy.interpolate.interp1d
与{scipy.interpolate.interp1d
插值不在您定义的范围内的值(b
次的范围)我修改了你的初始代码,告诉你:
相关问题 更多 >
编程相关推荐