У меня есть два тензора, A и B, по Nx3 каждый. У меня также есть булев тензор C = Nx1. Я хочу использовать это логическое значение для объединения A и B, следуя значениям C. Например:
A = [[ a1, a2, a3],
[ a4, a5, a6],
[ a7, a8, a9]]
B = [[ b1, b2, b3],
[ b4, b5, b6],
[ b7, b8, b9]]
C = [True, True, False]
Я хочу получить что-то вроде этого:
D = [[[ a1, a2, a3],
[ b1, b2, b3]],
[[ a4, a5, a6],
[ b4, b5, b6]],
[[ b7, b8, b9],
[ a7, a8, a9]]]
Как видите, оба тензора были объединены, и порядок того, какой ряд идет первым, определяется значениями C.
Два Nx3
тензора A и B объединяются в один D = Nx2x3
тензор путем объединения строк исходных тензоров. Порядок, в котором они добавляются к тензору Nx2x3
, зависит от булева тензора C, т.е.
если C [i] = True, D [i, 0 ,:] = A [i ,:] и D [i, 1,:] = B [i,:]. Если C [i] = False, то D [i, 0,:] = B [i,:] и D [i, 1,:] = A [i,:]
Я уверен, что есть простой подход к этому, но я не смог понять это.