У меня есть скрипт Python, использующий кадры данных pandas, который заполняет фрейм данных путем преобразования элементов другого фрейма данных. Я мог бы сделать это с помощью простого цикла for или itertuples, но я хотел посмотреть, возможно ли векторизовать его для максимальной скорости (мой фрейм данных очень большой, ~ 60000x12000).
Вот пример того, что я пытаюсь сделать:
#Sample data
sample_list=[1,2,5]
У меня есть список значений, как указано выше. Каждый элемент в моей новой матрице - это сумма определенных двух элементов из этого списка, разделенная на постоянное число n.
new_matrix[row,col]=(sample_list[row]+sample_list[col])/n
Таким образом, ожидаемый результат для n = 2 будет:
1 1.5 3
1.5 2 3.5
3 3.5 5
Прямо сейчас я выполняю это с циклом for, перебирая каждый элемент пустой матрицы и устанавливая для них значение, вычисленное по формуле. Есть ли способ векторизации этой операции (то есть что-то вроде new_matrix=2*old_matrix
, а не
for row, col in range(): new_matrix[row,col]=2*old_matrix[row,col]?