Нарезка по оси NumPy ndarray с разными индексамиPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Нарезка по оси NumPy ndarray с разными индексами

Сообщение Anonymous »

Для массива ndarray формы (n, m) я хочу «извлечь» подпоследовательности вдоль оси 1 длины k с k).
Однако, что если у меня есть список 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 ( содержит исходные последовательности, start_list — начальные индексы):

Код: Выделить всё

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]
Если e. г. start_list[0] равен 0, это означает, что мне нужен ar[0, 0:190000], если start_list[10000] равен 1337, это означает, что мне нужен ar[10000, 1337:1337+190000] и т. д.
Но это занимает >30 минут мой случай, и я уверен, что его можно как-то решить с помощью встроенных методов NumPy/некоторой магии нарезки.

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

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Ошибка типа: невозможно преобразовать numpy.ndarray в numpy.ndarray
    Anonymous » » в форуме Python
    0 Ответы
    737 Просмотры
    Последнее сообщение Anonymous
  • Ошибка типа: невозможно преобразовать numpy.ndarray в numpy.ndarray
    Anonymous » » в форуме Python
    0 Ответы
    118 Просмотры
    Последнее сообщение Anonymous
  • Ошибка типа: невозможно преобразовать numpy.ndarray в numpy.ndarray
    Anonymous » » в форуме Python
    0 Ответы
    37 Просмотры
    Последнее сообщение Anonymous
  • Ошибка типа: невозможно преобразовать numpy.ndarray в numpy.ndarray
    Anonymous » » в форуме Python
    0 Ответы
    31 Просмотры
    Последнее сообщение Anonymous
  • Ошибка типа: невозможно преобразовать numpy.ndarray в numpy.ndarray
    Anonymous » » в форуме Python
    0 Ответы
    23 Просмотры
    Последнее сообщение Anonymous

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