时间戳数组,它循环并根据其索引创建内部值的差异



目前,我正在使用以下内容;

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作为填充值,但您也可以使用零或其他东西。

最新更新