例如,我有两个长度相同的一维数组,包含时间序列和值序列
t = linspace(0, 5, 5) # [0, 1.25, 2.5, 3.75, 5]
x = array(range(10, 25)) # [10, 11, 12, 13, 14]
例如,我必须使用不同的采样时间点重新采样 x 数组(具有相同的起点和终点,但可以有任意数量的元素)
r = linspace(0, 5, 4) # [ 0, 1.667, 3.333, 5]
x2 = resample(t, x, r) # [10, 11, 12, 14]
也就是r的每个时间点都放在t的两个时间点之间,我想在t中找到两者的下点的索引。从索引数组中,可以得到 x 的相对点。
我想要一个基于向量的解决方案,没有循环,可能使用 scipy 的运算符。如果使用 scipy 的功能会更好。
编辑:这是我需要的代码,但更短、更快且基于矢量的解决方案会更好。我找不到一个(直到尝试)。
def resample(t, r):
i, j, k = 0, 1, 0
s = []
while j < len(t):
if t[i] <= r[k] < t[j]:
s.append(i)
k += 1
else:
i += 1
j += 1
s.append(len(t) - 1)
return array(s)