Как создать векторную функцию Numpy, которая просматривает текущий индекс и предыдущий индекс?

#python #numpy

Вопрос:

Я хочу создать функцию, которая векторизована (на самом деле просто ради знаний), вместо того, чтобы перебирать массив numpy с циклом for. Мое намерение состоит в том, чтобы получить i-е значение и i 1-е значение и рассчитать скорость.

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

 def get_velocity(position_array, timestamp_array):
   magnitude = np.linalg.norm(position_array [i   1] - position_array [i])
   return magnitude / (timestamp_array[i   1 ] - timestamp_array[i])
 

Я не уверен, как связать индексацию, хотя при вызове векторизованной функции.

Комментарии:

1. Посмотрите x[1:]-x[:-1] , чтобы принять несколько различий.

2. Просто чтобы уточнить, я, скорее всего, пытаюсь вставить квадратный колышек в круглое отверстие. Ваш метод, по сути, получает разницу от каждого соседнего индекса и не требует попыток векторизации или итерации по массиву.

3. Я не уверен, что вы подразумеваете под «векторизованным». Для меня правильная numpy векторизация означает использование методов, подобных тем, которые я предложил для работы с целыми массивами (в скомпилированном коде). Это означает, что по возможности следует избегать итераций на уровне Python.