Как присвоить значения определенным строкам в тензоре на основе некоторого условия?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как присвоить значения определенным строкам в тензоре на основе некоторого условия?

Сообщение Anonymous »

Дайте тензор left[N,2], right[N,2], Mask[1,N], мне нужен быстрый метод для присвоения значения строки слева на основе некоторого условия значений справа, применяя маска для обоих, например:
left =
[[0.9, 0.8],
[0.3, 0.0],
[0.6, 0.9],
[0.7, 0.0],
[0.6, 0.8],
[0.6, 0.2],
[0.6, 0.2]]

маска =
[ True, True, False, True, False, False, True]

справа =
[[ 1., 3.],
[ 1., 5.],
[ 7., 0.],
[11., 13.],
[17., 19.],
[21., 1. ],
[ 1., 13.]]

и c1 = [1,3,5] и c2 = [11, 13]. Итак, фильтруя слева и справа по маске, если строка справа имеет обе записи либо в c1, либо обе в c2, то соответствующая строка слева должно быть [0, 1], если нет, то [1, 0]. Он применяется в прямом методе, поэтому мне нужен быстрый и эффективный способ сделать это, отличный от цикла for.
так что это должно быть что-то вроде этого, но это не работает:
left[mask] = torch.tensor([0, 1]) if (right[mask][0] in c1 and right[mask][1] in c1) or ( right[mask][0] in c2 and right[mask][1] in c2) else torch.tensor([1,0])


Подробнее здесь: https://stackoverflow.com/questions/783 ... -condition
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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