(1) У меня есть трехмерные данные, поэтому я использовал расстояние Евклида, чтобы получить расстояние между двумя точками.
Я хочу найти ближайшую к текущей точке точку и пройти 500 точек. -> 1 массив
И создайте большой массив, сконцентрировав эти массивы.
Код: Выделить всё
from math import dist
ITP = 100
bigarray = pd.DataFrame(columns=range(1, ITP+1))
array = pd.DataFrame(columns=range(1, ITP+1)) #make array
for i in range(len(data_final)-ITP):
current_point = data_final[i]
min_distance = float('inf')
nearest_point = None #initiate
for j in range(len(data_final)-ITP): #find closest spot
distance = dist(current_point, data_final[j]) # Euclid distance
if i != j and distance < min_distance: #
min_distance = distance # update min_distance
nearest_point = j # update nearest_point
for k in range(ITP): # make array
array.loc[0, k+1] = dist(data_final[i+k], data_final[nearest_point+k])
bigarray = pd.concat([bigarray, array], ignore_index=True)
array = pd.DataFrame(columns=range(1, ITP+1))
Код: Выделить всё
import math
mean_final = [0 for i in range(ITP)]
for i in range(1, ITP+1):
mean_final[i-1] = (bigarray[i].mean())
for i in range(0, ITP) :
mean_final[i] = math.log(mean_final[i])
mean_final
у меня получился вот такой график.
введите сюда описание изображения
Код: Выделить всё
import matplotlib.pyplot as plt
rng1 = ITP
plt.subplot(1, 2, 2)
plt.plot(range(len(mean_final[0:rng1])), mean_final[0:rng1], label='Lyapunov Exponent', color='red')
plt.title('Lyapunov Exponent over Time')
plt.xlabel('Index')
plt.ylabel('Lyapunov Exponent')
plt.show()
Подробнее здесь: https://stackoverflow.com/questions/790 ... ugh-python