Я пытаюсь рассчитать спектральную энтропию массива следующим образом:
array([0.00000000e+00, 1.00743814e-04, 2.01487627e-04, 2.20497985e+01,
2.20498993e+01, 2.20500000e+01])
Из этого я получил свой код. однако я обнаружил, что мои данные были плавающими, поэтому я также адаптировал код из здесь, чтобы сформулировать следующее:
>>> def ent(data):
... uniqw, inverse = np.unique(data, return_inverse=True)
... p_data= np.bincount(inverse)/len(data) # calculates the probabilities
... ent=entropy(p_data) # input probabilities to get the entropy
... return ent
Результат
>>> ent(freqArray)
1.791759469228055
Как мне заставить мою энтропию лежать между 0 и 1
float
) сложно, потому что вы не можете легко аппроксимировать распределение вероятностей, как вы можете это делать с дискретными величинами. Вы уверены, что это то, что вы хотите сделать? - person Davis Herring   schedule 23.04.2018