#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.