#python #arrays #pandas #numpy
#python #массивы #панды #numpy
Вопрос:
Я пытаюсь присвоить массивы переменной длины массиву 2D NumPy с переменным начальным индексом (смещением). Я справился с помощью цикла, но мне интересно узнать, есть ли более разумный способ, например, с использованием итераторов, векторизации или других методов.
Вот пример кода:
>>> rd
array([array([-35., -31., -27., -23., -19., -14., -10., -5.]),
array([-24., -21., -18., -15., -11., -8., -4.]),
array([-7., -6., -4., -2.]),
array([-16., -13., -11., -8., -6., -3.])], dtype=object)
>>> offset = np.array([2,3,0,1])
>>> res = np.zeros((offset.size,10))
>>> for i in range(offset.size) :
... res[i, offset[i]:offset[i] rd[i].size] = rd[i]
...
>>> res
array([[ 0., 0., -35., -31., -27., -23., -19., -14., -10., -5.],
[ 0., 0., 0., -24., -21., -18., -15., -11., -8., -4.],
[ -7., -6., -4., -2., 0., 0., 0., 0., 0., 0.],
[ 0., -16., -13., -11., -8., -6., -3., 0., 0., 0.]])
>>>
rd
заполнил res
матрицу с правильным смещением.
Но есть ли способ получить тот же результат, избегая цикла for, чтобы ускорить выполнение?
Комментарии:
1. Покажите некоторые результаты на этом пути. Я не могу запустить код в своей голове и предпочитаю не запускать весь скрипт на своем компьютере.
2. Вы также можете упростить пример кода, чтобы сосредоточиться на том, что действительно важно. Например, вам действительно нужны
dataframe
npf
вычисления and `? Является ли этот последний цикл предметом вашего вопроса?3. @hpaulj, спасибо за комментарий. Да, последний цикл является предметом моего вопроса.
4. Похоже на вопрос о заполнении массива. Это обсуждалось несколько раз в прошлом. Проще всего объяснить
itertools.zip_longest
. Существует более причудливый метод, разработанный Divakar, но его сложнее объяснить и привести навскидку.