目前,我正在使用以下内容;
timer = np.hstack(np.arange(100).reshape(100, 1))
def delta(timestamps):
"""Accrual periods"""
for i in range(timestamps):
dtimes_1 = timestamps[i] - timestamps[i - 1]
dtimes_2 = timestamps[i + 1] - timestamps[i - 1]
return(dtimes_1, dtimes_2)
我试图实现的是一个函数,它接收计时器向量作为时间戳输入,并以两种方式改变它们的值;1. 作为 Ti - Ti-1 和 2。作为 Ti+1 - Ti-1。
在计时器变量中,我放置了数字 100 和 1,但实际上,这些数字将由用户输入对前面函数和输出的影响(主要是迭代次数和时间步长(决定。
在这个特定的例子中,如果计时器等于 [0]、[1]、[2]、[3],我希望 dtimes_1 返回三个值:[0]、[1]、[1],dtimes_2返回 [0]、[2]、[2] 等。
如果d1[i] == T[i+1] - T[i]
和d2[i] == T[i+2] - T[i]
就足够了,你可以这样做:
import numpy as np
def delta(timestamps):
"""Accrual periods"""
dtimes_1 = timestamps[1:] - timestamps[:-1]
dtimes_2 = timestamps[2:] - timestamps[:-2]
return dtimes_1, dtimes_2
timer = np.array([1, 2, 4, 8]).reshape(4, 1)
d1, d2 = delta(timer)
print(timer)
print(d1)
print(d2)
输出:
[[1]
[2]
[4]
[8]]
[[1]
[2]
[4]]
[[3]
[6]]
如果你真的想用你要求的精确算术来拥有它,请考虑一下:
def delta(timestamps):
"""Accrual periods"""
dtimes_1 = np.vstack((None, timestamps[1:] - timestamps[:-1]))
dtimes_2 = np.vstack((None, timestamps[2:] - timestamps[:-2], None))
return dtimes_1, dtimes_2
输出:
[[1]
[2]
[4]
[8]]
[[None]
[1]
[2]
[4]]
[[None]
[3]
[6]
[None]]
在这里,我使用None
作为填充值,但您也可以使用零或其他东西。