#python #numpy
#питон #тупица
Вопрос:
Как я могу вычесть данные sensor_1 из sensor_2, используя Numpy, в то время как sensor_1 имеет другой размер, другое расстояние по времени и пропускает одни и те же временные точки?
x1=np.array([4.1, 5.2, 7.1]) # time points y1=np.array([6.1, 7.1, 7.9]) # sensor1 data x2=np.array([1.3, 2.3, 3.4, 4.7, 5.1, 6.3, 7.2]) # time points y2=np.array([4.9, 5.1, 4.6, 6.1, 7.1, 17.9, 4.2]) # sensor2 data
Я ищу в диапазоне x1 разницу между y2-y1. Пропущенный момент времени (~6) и более позднее начало в x1:y1 немного усложняют задачу.
Размер каждого набора данных составляет около 1 Мбайт. Расстояние между точками времени неизвестно. Это затрудняет повторный отбор проб.
По причинам устаревания предпочтительным является решение Py2.7. Хотя просить Панды-это нормально.
Ответ №1:
Одна вещь, которую вы можете сделать y2 - y1
в этих точках x1
, — это линейная интерполяция:
np.interp(x1, x2, y2) - y1
Ответ №2:
В ответ на ответ @tueda.
Хорошая мысль …
gt;gt;gt; np.interp(x1, x2, y2)-y1 array([-0.69230769, 0.9 , -2.17777778])
Повторная выборка, по-видимому, необходима для обработки недостающей точки в x1 @ 6.3, чтобы сохранить добавленный всплеск.
gt;gt;gt; np.interp(np.linspace(x1[0], x1[-1], 4), x1, y1)-np.interp(np.linspace(x1[0],x1[-1], 4), x2, y2) array([ 0.69230769, -0.09090909, -8.62105263, 2.17777778])
Достаточно близко для меня в качестве решения. Спасибо @tueda.