Какой самый эффективный способ получить возврат журнала в 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.
Я также обращаюсь к элементам довольно грубо, поскольку у меня мало опыта работы с функциями генератора или внутренними компонентами.
1 ответ
Решение
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
принимает разницу между каждой последовательной парой значений.