Транспонирование матрицы (объединение каждых двух индексов) - PullRequest
0 голосов
/ 18 июня 2020

У меня есть такая матрица:

[99,e5],
[fc,9a],
[31,ac],
[d2,03]

Эти данные являются байтами из звука PCM, 16 бит, поэтому каждые 2 байта - это одна выборка. Мне нужно получить такой массив:

[99,fc,31,d2],
[e5,9a,ac,03]

, чтобы окончательно интерпретировать этот массив как

[99fc,31d2],
[e59a,ac03]

Я сделал с циклами, но он очень медленный, и мне нужна хорошая производительность, потому что это аудиоданные в реальном времени.

=== РЕДАКТИРОВАТЬ ===

Возможно, я плохо объяснил

У меня есть

[b'\xa5\x00', b'\xfc\x00', b'\xfb\x0b', b'\x87\x01']

Мне нужно получить

[b'\xa5\xfc', b'\xfb\x87'],
[b'\x00\x00', b'\x0b\x01']

1 Ответ

0 голосов
/ 18 июня 2020

Это все еще будет действие for l oop, но вы можете сделать это так:

# First transpose
lst = np.array(lst).transpose()

# Now add elements
lst = [x+y for x,y in zip(lst[0::2], lst[1::2])]
...