У меня есть функция numpy, которая преобразует 2D-массив координат x, y в плоский массив расстояний между каждой координатой между предыдущими. (См Numpy - transform 2D array of x,y coordinates into flat array of distance between coordinates)Numpy - преобразовать функцию numpy в генератор
input = [[-8081441,5685214], [-8081446,5685216], [-8081442,5685219], [-8081440,5685211], [-8081441,5685214]]
output = [-8081441, 5685214, 5, -2, -4, -3, -2, 8, 1, -3]
Благодаря Divakar's answer, у меня есть две Numpy функции, которые делают то, что я хочу
arr = np.asarray(input).astype(int)
np.hstack((arr[0], (-np.diff(arr, axis=0)).ravel()))
Другого подхода с нарезкой повторить дифференцирование -
arr = np.asarray(input).astype(int)
np.hstack((arr[0], (arr[:-1,:] - arr[1:,:]).ravel()))
Мой вопрос, есть ли способ перенести одну из этих функций numpy в генератор для повышения производительности? Можно ли использовать numpy в генераторе?
Во-первых, берегитесь преждевременной оптимизации, у вас есть функция, которая делает то, что вы хотите. Во-вторых, генераторы действительно не помогут вам здесь. Функции Numpy получают большую часть своей скорости от векторизации, которая требует плотного представления и существенно действует на все элементы массива синхронно. – Erotemic