you are measuring the standard deviation of probabilities not the actual values; Here, is an example, where I draw from true standard normal distribution:
>>> from scipy.stats import norm
>>> xs = np.linspace(-3, 3, 100)
>>> pdf = norm.pdf(xs)
>>> prob = pdf / pdf.sum() # these are probabilities
>>> np.std(prob) # note the very small value below
0.008473522157507624
The correct way here is to use this formula:
to measure variance and then take the square root to get standard deviation; The first term is basically the second moment and the second term is mean squared:
>>> mu = xs.dot(prob) # mean value
>>> mom2 = np.power(xs, 2).dot(prob) # 2nd moment
>>> var = mom2 - mu**2 # variance
>>> np.sqrt(var) # standard deviation
0.98764819824739092
Note that the value we get is very close to 1 which is consistent with the fact that I draw from standard normal;