Ich habe ein Beispiel eines Histogramm mit:wie Entropie von np Histogramm berechnen
mu1 = 10, sigma1 = 10
s1 = np.random.normal(mu1, sigma1, 100000)
und
berechnethist1 = np.histogram(s1, bins=50, range=(-10,10), density=True)
for i in hist1[0]:
ent = -sum(i * log(abs(i)))
print (ent)
Jetzt habe ich die Entropie aus der gegebenen Histogrammmatrix finden will, aber da np.histogram gibt zwei Arrays zurück, ich habe Probleme, die Entropie zu berechnen. Wie kann ich das erste Array von np.histogram aufrufen und die Entropie berechnen? Ich würde auch Mathe-Domain-Fehler für die Entropie bekommen, auch wenn mein Code oben korrekt ist. :(
** Edit: Wie finde ich Entropie, wenn Mu = 0 und log (0) ergibt Fehler math Domäne
So ist der eigentliche Code, den ich zu schreiben bin versucht?:
mu1, sigma1 = 0, 1
mu2, sigma2 = 10, 1
s1 = np.random.normal(mu1, sigma1, 100000)
s2 = np.random.normal(mu2, sigma2, 100000)
hist1 = np.histogram(s1, bins=100, range=(-20,20), density=True)
data1 = hist1[0]
ent1 = -(data1*np.log(np.abs(data1))).sum()
hist2 = np.histogram(s2, bins=100, range=(-20,20), density=True)
data2 = hist2[0]
ent2 = -(data2*np.log(np.abs(data2))).sum()
Bisher ist das erste Beispiel ent1 würde nan ergeben, und die zweite, ent2 ergibt Fehler Mathe Domain :(
Offensichtlich ist das Problem "log (0)" in undefined. Aber warum benutzt du 'range = (- 20,20)'? Ich glaube nicht, dass 'np.random.normal (mu2, sigma2, 100000)' irgendeine negative Zahl erzeugt! Wie auch immer, solange es in einigen Bins keine Punkte gibt, erhalten Sie diesen Fehler! – Mahdi
Hey! Vielen Dank! Ich habe es aussortiert. Ich habe alle 0 Daten ausgeschnitten! – Vinci
Gern geschehen! Das ist eine gute Lösung! Wenn Sie denken, dass meine Antwort geholfen hat, akzeptieren Sie bitte die Antwort, damit die Frage markiert wird! – Mahdi