Какой самый эффективный способ получить возврат журнала в 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принимает разницу между каждой последовательной парой значений.

Другие вопросы по тегам