Как в Python обработанные значения кортежа снова сложить по тем же кортежам?
Имеется словарь:
{'spk1': [array([ 5.7989768e-05, -3.0932188e-05, -6.9003938e-05, ...,
7.1993265e-05, 4.7599726e-05, 4.8396392e-05], dtype=float32),
array([ 7.5168966e-04, -4.5251290e-05, 3.4856668e-04, ...,
-2.5292889e-03, -2.9699195e-03, -2.6236360e-03], dtype=float32),
array([-0.00094804, -0.00024563, -0.00010466, ..., 0.01256133,
0.01113857, 0.00603152], dtype=float32),
array([ 0.0007968 , 0.00047213, -0.00070908, ..., -0.00846404,
-0.00792614, -0.00820034], dtype=float32)],...}
Сначала достаю из словаря значения, причем так: для каждого ключа перебрать его значения во всех возможных вариантах. Т.е. имеется, например, ключ spk1 и его 4 значения: получаю все возможные их сочетания и складываю в кортежи:
tuples: [(array([ 5.7989768e-05, -3.0932188e-05, -6.9003938e-05, ...,
7.1993265e-05, 4.7599726e-05, 4.8396392e-05], dtype=float32), array([ 7.5168966e-04, -4.5251290e-05, 3.4856668e-04, ...,
-2.5292889e-03, -2.9699195e-03, -2.6236360e-03], dtype=float32)), (array([ 5.7989768e-05, -3.0932188e-05, -6.9003938e-05, ...,
7.1993265e-05, 4.7599726e-05, 4.8396392e-05], dtype=float32), array([-0.00094804, -0.00024563, -0.00010466, ..., 0.01256133,
0.01113857, 0.00603152], dtype=float32)),...]
Любой один элемент кортежа - это массив чисел np.array(). В кортеже, таким образом, по 2 таких массива.
Затем мне необходимо обработать функцией embed_utterance() каждый из элементов всякого кортежа и снова образовать из них тот же кортеж (но после обработки). Однако если создаю переменную, где вложен кортеж с обработанными элементами, получаю ошибку:
TypeError: tuple expected at most 1 arguments, got 2
Переменную создаю так:
embeds = tuple(np.array( [encoder.embed_utterance(single[0]) ] ), np.array([encoder.embed_utterance(single[1]) ] ) )
Как понимаю, она возникает по причине того, что в цикле обрабатывается за раз только одно значение single. Я же пытаюсь одной итерацией скрестить сразу 2 значения. Это моё предположение. Как тогда поступить? Код:
from itertools import combinations
import numpy as np
for elems in speaker_wavs.values():
tuples = list(combinations(elems, 2)) # получаем списки кортежей
print('tuples: ', tuples)
for single in tuples: # идем по каждому кортежу в списке
embeds = tuple(np.array( [encoder.embed_utterance(single[0]) ] ), np.array([encoder.embed_utterance(single[1]) ] ) )
print(embeds)