Как я могу вычесть данные sensor_1 из sensor_2, используя Numpy, в то время как sensor_1 имеет другой размер и пропускает одни и те же временные точки?

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