Продлить список
Имеется список. Это всегда прямая линия. Вопрос - как продлить значения на 5 шагов вперед (зная что это всегда прямая линия) и как узнать угол наклона этой линии?
data =
array([[1],[2],[3],[4],[5],[6],[7],[8],[9],[10]])
Вид этого такой:
Собственно получим лист:
data = ([1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12],[13],[14],[15])
и это угол в итоге 45 градусов
Ответы (2 шт):
Автор решения: n1tr0xs
→ Ссылка
Какой-то странный у вас формат входных данных, по-моему.
Но, если я правильно понял, то этот код должен вам помочь:
data = [[1],[2],[3],[4],[5],[6],[7],[8],[9],[10]]
diff = data[1][0] - data[0][0]
for i in range(5):
data.append([data[-1][0]+diff])
print(data)
Если входные данные все-таки другие:
from array import array
data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
data = array('d', data)
diff = data[1] - data[0]
for i in range(5):
data.append([data[-1]+diff])
print(data)
Если входные данные - список списков из одного элемента (как в вопросе):
from array import array
data = [[1],[2],[3],[4],[5],[6],[7],[8],[9],[10]]
data = array('d', [i[0] for i in data])
diff = data[1] - data[0]
for i in range(5):
data.append(data[-1]+diff)
print(data)
Автор решения: FotonPC
→ Ссылка
Во первых у вас скорее плохой формат хранения данных. Лучше бы было:
import math
data = [[0,0],[1,1], [2,2], [3,3], [4,4], [5,5]]
diff_x = data[-1][0] - data[0][0] # Вычисляем смещение по x
diff_y = data[-1][1] - data[0][1] # Вычисляем смещение по y
gipn = math.sqrt(diff_x ** 2 + diff_y ** 2) # Вычисляем гипотенузу
angle = math.atan2(diff_x, diff_y) # Просто так вычисляем угол
diff_x_step = data[1][0] - data[0][0]
diff_y_step = data[1][1] - data[0][1]
for i in range(1,6):
data.append([data[-1][0] + diff_x_step, data[-1][1] + diff_y_step])
print(data)
Вывод:
[[0, 0], [1, 1], [2, 2], [3, 3], [4, 4], [5, 5], [6, 6], [7, 7], [8, 8], [9, 9], [10, 10]]
