2014-11-24 3 views
0

У меня есть следующий код:Медленное NumPy элемент путем деления элемента массива

p_1_test = np.divide(lhs_n, np.array(range(1,n+1))) 

Где lhs_n является NumPy массив длины n. В настоящее время это занимает около 17 секунд против цикла 0,25 секунды для приблизительно n = 48000. Кто-нибудь знает, почему это так медленно, и как его векторизовать так, чтобы ускорить его?

+2

Для создания промежуточного «диапазона» может потребоваться некоторое время. Вы пытались использовать 'np.arange' вместо этого, чтобы создать массив напрямую? – BrenBarn

+0

Эй, если вы ответите, я приму это. – mlstudent

ответ

1

Использование np.array(range(...)) должно сначала создать range, что в Python 2 является обычным списком. Это означает, что он должен будет создать список из 48 000 элементов, как предварительный для создания массива numpy.

Вместо этого попробуйте использовать np.arange(1, n+1), чтобы непосредственно создать массив numpy с определенным диапазоном значений, избегая создания промежуточного списка.