В принципе, я хотел бы сравнить мой существующий массив (timestamp, value) с предыдущим значением минус
Скажем, например
Array1 = [[key1, v1] [key2, v2] [key3, v3] [key4, v4]]
и хотел бы создать новый массив, например
Array2 = [[key2, v2-v1] [key3, v3-v2] [key4, v4-v3]]
здесь ключ - метка времени
Вы можете использовать enumerate
и нарезать свой исходный индекс, чтобы начать с первого индекса, такого как
res = [[v[0], f'{arr_1[i+1][1]}-{arr_1[i][1]}'] for i, v in enumerate(arr_1[1:])]
# [['key2', 'v2-v1'], ['key3', 'v3-v2'], ['key4', 'v4-v3']]
Расширенный цикл:
res = []
for i, v in enumerate(arr_1[1:]):
res.append([v[0], f'{arr_1[i+1][1]}-{arr_1[i][1]}'])
Вот простой способ его решить:
Array1 = [['key1', 1], ['key2', 2], ['key3', 3], ['key4', 4]]
array2 = []
for i, elem in enumerate(Array1[1:]):
array2.append([elem[0], elem[1] - Array1[i][1]])
print(array2)
Вы перебираете элементы Array1
начиная со второго элемента, и сохраняете key
какой он есть, тогда как вы вычисляете второй элемент как разницу текущего элемента за вычетом предыдущего значения элемента (то есть Array1[i][1]
, так как i
начинается с 0
). Это печатает:
[['key2', 1], ['key3', 1], ['key4', 1]]
Надеюсь это поможет.
dict
для сохранения этих ключевых значений будет более эффективным.collections.OrderedDict
для сохранения порядка.