Однако, что если у меня есть список start_list и end_list длины n (или только start_list, так как длина подпоследовательности известна в любом случае), который содержит начальные индексы (и конечные индексы) подпоследовательностей, которые я хочу извлечь? Интуитивно я попробовал ar[:, start_list:end_list], но это выдает TypeError: индексы срезов должны быть целыми числами или не иметь значения или иметь метод __index__.
Что было бы решением этой проблемы без использования циклов и использования методов NumPys? Для моей проблемы цикл for занял 30 минут, но это должно иметь решение в стиле NumPy за 5 мс, поскольку это просто индексация.
[edit]: Поскольку проблему, вероятно, лучше понять с помощью кода (спасибо за подсказки), я постараюсь сделать ее более компактной и показать, что я сделал, чтобы решить ее с помощью цикла.
У меня есть черта формы (40450, 200000), представляющие 40450 сигналов длиной 200000 каждый. Сигналы сдвинуты, и я хочу их выровнять. Итак, я хочу извлечь подпоследовательности длиной, скажем, 190000 из каждой из последовательностей длиной 40450. Для этого у меня есть список start_list длиной 40450, содержащий начальные индексы для подпоследовательностей (каждая из подпоследовательностей 40450, которые я хочу извлечь, имеет другую начальную точку в исходной последовательности). длиной 200000).
Я могу решить эту проблему с помощью цикла for (
Код: Выделить всё
ar
Код: Выделить всё
k = 190000
ar_new = np.zeros((40450, k))
for i in range(ar_new.shape[0]):
ar_new[i] = ar[i, start_list[i]:start_list[i]+k]
Но это занимает >30 минут мой случай, и я уверен, что его можно как-то решить с помощью встроенных методов NumPy/некоторой магии нарезки.
Подробнее здесь: https://stackoverflow.com/questions/740 ... ng-indices