Изменение масштаба данных оси до фиксированного размера - PullRequest
0 голосов
/ 06 апреля 2020

У меня есть несколько x / y точек данных разных размеров, и мне нужно масштабировать каждую из них до одинакового фиксированного размера.

Например, с учетом двух наборов данных x / y, где первый имеет 12 точек данных, а второй 6. Максимальное значение y первого равно 80, а второго 55:

X1 = np.array([ 1, 2, 3, 4, 5, 6 ,7, 8, 9, 10, 11, 12 ])
Y1 = np.array([ 10, 20, 50, 55, 70, 77 ,78, 80, 55, 50, 21, 12 ])

X2 = [ 1, 2, 3, 4, 5, 6 ]
Y2 = [ 10, 20, 50, 55, 50, 10 ]

Как я могу изменить масштаб этих данных, чтобы они имели по 8 точек данных, а максимальное значение y было равно 60? Я развиваюсь в python с numpy / matplotlib.

1 Ответ

1 голос
/ 06 апреля 2020

Если вы хотите добавить / удалить точки из набора данных, моей первой идеей будет регрессия для набора данных с помощью np.polyfit или scipy.optimize.curve_fit (в зависимости от того, какую функцию вы ожидаете, что ваши точки будут следовать) , затем создайте новые точки из этой регрессии.

new_x_points = [1, 2, 3, 4, 5, 6, 7, 8]
coeff = np.polyfit(X1, Y1, deg = 2)
new_y_points = np.polyval(coeff, new_x_points)

Перемещение точек из интервала (a, b) в интервал (c, d) является чисто математической задачей. Если x находится на интервале (a, b), то

f(x) = (x - a) * h + c
where 
h = (d - c)/(b - a)

является линейной картой с интервалом (c, d).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...