2015-05-06 4 views
1

Какое самое быстрое и изящное решение для построения последовательности возвращаемых журналов?Каков самый эффективный способ получить возврат журнала в numpy

Проблема заключается главным образом в сопоставлении функции, которая принимает i-й и (i + 1) -й элементы в качестве входов для каждого элемента массива.

для функции и простой массив можно определить доходность журнала следующим образом:

import numpy as np 
ar = np.random.rand(10) 
f_logR = lambda ri, rf: np.log(rf) - np.log(ri) 

logR = np.asarray([f_logR(ar[i], rf) for i,rf in enumerate(ar[1:])]) 

Однако я строю список из отдельных элементов Numpy, а затем преобразовать его обратно в Numpy массив снова.

Я также получаю доступ к элементам довольно грубо, так как у меня мало опыта с функциями генератора или внутренними элементами numpy.

ответ

6
f_logR = lambda ri, rf: np.log(rf) - np.log(ri) 
logR = np.asarray([f_logR(ar[i], rf) for i,rf in enumerate(ar[1:])]) 

эквивалентно

logR = np.diff(np.log(ar)) 

np.log принимает журнал каждого значения в ar и np.diff принимает разницу между каждой последовательной парой значений.