как выровнять одинаковые значения в двух массивах в python - PullRequest
0 голосов
/ 27 мая 2020

Я пытаюсь выровнять два видео, используя их временные метки ut c.

например:

временные метки видео 1 = 1234.4321, 1234.4731, 1234.5432, 1234.5638, ...

временные метки видео 2 = 1234.4843, 1234.5001, 1234.5632, 1234.5992, ...

Я хотел бы выровнять их так, чтобы Ближайшие временные метки в окне 0,0150 с выравниваются без выравнивания двух значений из одного массива с одним значением во втором массиве.

пример вывода:

временные метки видео 1 = 1234.4321, 1234.4731, _________, 1234.5432, 1234.5638, _________, ...

временные метки видео 2 = _________, 1234.4843, 1234.5001, _________, 1234.5632, 1234.5992, ...

Кто-нибудь может помочь?

EDIT

Была небольшая путаница с отметками времени. Проблема не в том, что их просто нужно сдвигать раз в два значения. Надеюсь, этот обновленный пример прояснит это. Оба примера верны. Одно решение должно уметь решать оба.

Пример 2:

timestamp3 = 1590595834.6775, 1590595834.70479, 1590595834.73812, 1590595834.77163, 1590595834.80438

timestamp4 = 1590595835.70971, 1590595835.73674, 1590595835.7695, 1590595835.80338, 1590595835.83634

вывод :

timestamp3 = 1590595835.6775, 1590595835.70479, 1590595835.73812, 1590595835.77163, 1590595835.80438, _______________, ...

timestamp4 = _______________, 1590595835.70971, 1590595835.73674, 1590595835.7695, 1590595835.80338, 1590595835.83634, ...

Ответы [ 2 ]

0 голосов
/ 27 мая 2020

Примерно так:

timestamp3 = [1590595834.6775, 1590595834.70479, 1590595834.73812, 1590595834.77163, 1590595834.80438]
timestamp4 = [1590595834.70971, 1590595834.73674, 1590595834.7695, 1590595834.80338, 1590595834.83634]

len3 = len(timestamp3)
len4 = len(timestamp4)
ins = '_____________'
diff = 0.015
ii = jj = 0
while True:
    if timestamp3[ii] < timestamp4[jj] - diff:
        timestamp4.insert(jj, ins)
        len4 += 1
    elif timestamp4[ii] < timestamp3[jj] - diff:
        timestamp3.insert(ii, ins)
        len3 += 1

    ii += 1
    jj += 1
    if ii == len3 or jj == len4:
        if len3 > len4:
            timestamp4.extend([ins]*(len3-len4))
        elif len4 > len3:
            timestamp3.extend([ins]*(len4-len3))
        break

print(timestamp3)
print(timestamp4)

Дает:

[1590595834.6775, 1590595834.70479, 1590595834.73812, 1590595834.77163, 1590595834.80438, '_____________']
['_____________', 1590595834.70971, 1590595834.73674, 1590595834.7695, 1590595834.80338, 1590595834.83634]
0 голосов
/ 27 мая 2020

Думаю, это то, что вы имеете в виду:

timestamps1 = [1234.4321, 1234.4731, 1234.5432, 1234.5638]
timestamps2 = [1234.4843, 1234.5001, 1234.5632, 1234.5992]

index = len(timestamps1)

while index > 0:
    timestamps1.insert(index,'_______')
    index -= 2
    timestamps2.insert(index,'_______')

print(timestamps1)
print(timestamps2)

Вывод:

[1234.4321, 1234.4731, '_______', 1234.5432, 1234.5638, '_______']
['_______', 1234.4843, 1234.5001, '_______', 1234.5632, 1234.5992]
...