J'essaie d'implémenter une implémentation vectorisée de la distribution gaussienne sans utiliser de fonctions numpy. Pour être clair, je voudrais obtenir le même résultat que ci-dessous sans le forloop.Implémentation vectorisée de la distribution normale
import numpy as np
import matplotlib.pyplot as plt
import math
x = np.linspace(-1, 1, 100)
y = np.linspace(-1, 1, 100)
for i in range(0, len(x)):
y[i] = normpdf(y[i], 0, .1)
plt.plot(x, y)
plt.show()
def normpdf(x, mean, sd):
var = float(sd)**2
denom = (2*math.pi*var)**.5
num = math.exp(-(float(x)-float(mean))**2/(2*var))
return num/denom
Pourriez-vous changer votre code afin que normpdf soit défini avant d'être appelé dans la boucle for? –
Quelle est votre raison de vouloir faire cela "sans utiliser de fonctions numpy"? Vous utilisez déjà 'np.linspace', et vous avez dit que vous vouliez une solution vectorisée, ce qui signifie généralement exploiter les méthodes de tableau numpy. Étiez-vous au courant de ['scipy.stats.norm.pdf'] (https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.norm.html)? –
C'est comme ça que je l'ai défini dans mon Notebook, ça ne marchera toujours pas vectorisé. @ Ali_m il n'y a pas de raison fonctionnelle, ça fait partie d'un exercice de vectorisation d'un algo ML. –