Создайте логический массив с True для любого значения между двумя записями в определенном массиве.Python

Программы на Python
Anonymous
Создайте логический массив с True для любого значения между двумя записями в определенном массиве.

Сообщение Anonymous »

У меня есть тензор idx, который имеет целые числа от 0 до 27, например:

Код: Выделить всё

idx = torch.tensor([9, 0, 6, 5, 2, 1, 10, 18, 26, 0, 11])
Я хочу создать еще один массив/тензор с логическими значениями. Я хочу, чтобы значение было True, когда оно находится строго между 1 (слева) и 0 (справа) или концом тензора:

Код: Выделить всё

flag = torch.tensor([False, False, False, False, False, False, True, True, True, False, False])
Обратите внимание: если 0 не появляется после 1, мне все равно нужно True до конца тензора. То есть

Код: Выделить всё

idx = torch.tensor([9, 0, 6, 5, 2, 1, 10, 18])
flag = torch.tensor([False, False, False, False, False, False, True, True])
Есть ли быстрый способ сделать это без дорогостоящего цикла for? Или, если цикл for неизбежен, какой самый эффективный способ сделать это?
Важно, мой idx всегда будет иметь 0 и 1 Через определенные промежутки времени и они всегда будут чередоваться. В частности, между 1 и 0 или между 0 и 1 всегда имеется ровно 3 (в данном случае) элемента.

Подробнее здесь: https://stackoverflow.com/questions/787 ... -a-certain

Вернуться в «Python»