Вычисление энтропии только для сегментов данных, которые не содержат Nans - PullRequest
1 голос
/ 01 мая 2019

Я пытаюсь вычислить энтропию выборки для временного ряда импульсов.Я разбиваю временные ряды импульсов на 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])

любая помощь будет оценена!

...