Я пытаюсь вычислить энтропию выборки для временного ряда импульсов.Я разбиваю временные ряды импульсов на 30-е эпохи.Если эпоха 30-х годов содержит нан, я хочу присвоить значение энтропии 0, в противном случае рассчитайте его с помощью sampen2
Я пробовал следующее:
from sampen import sampen2
pulse_split = np.split(pulse,len(pulse)/30)
Full_entropy = np.array([])
for i in pulse_split:
data_chunk = i
if np.isnan(np.min(data_chunk)):
thirty_seconds_entropy = 0
else:
thirty_seconds_entropy = sampen2(data_chunk)
Full_entropy = np.append([Full_entropy],[thirty_seconds_of_entropy])
Full_entropy
, но получаю следующую ошибку:
ZeroDivisionError Traceback (most recent call last)
<ipython-input-99-4523514ceea0> in <module>()
7 thirty_seconds_entropy = 0
8 else:
----> 9 thirty_seconds_entropy = sampen2(data_chunk)
10 Full_entropy = np.append([Full_entropy],[thirty_seconds_of_entropy])
11 Full_entropy
C:\ProgramData\Anaconda3\lib\site-packages\sampen\sampen2.py in sampen2(data, mm, r, normalize)
135 b[0] = float(n) * (n - 1.0) / 2.0
136 for m in range(mm):
--> 137 p[m] = float(a[m]) / float(b[m])
138 v2[m] = p[m] * (1.0 - p[m]) / b[m]
139 for m in range(mm):
ZeroDivisionError: float division by zero
текущая переменная data_chunk
даже не содержит nan, это:
array([69.3400473 , 68.3634699 , 68.3634699 , 69.3400473 , 70.3166247 ,
74.22293431, 76.37140459, 77.34798199, 77.34798199, 78.3245594 ,
76.37140459, 73.24635691, 69.3400473 , 66.21499962, 63.28526741,
59.37895781, 58.20706493, 58.20706493, 59.37895781, 60.35553521,
61.33211261, 61.33211261, 62.30869001, 63.28526741, 63.28526741,
64.26184482, 65.23842222, 65.23842222, 66.21499962, 66.21499962])
любая помощь будет оценена!