Используя numpy trapz, без выбора параметра x, предполагается, что интервалы нашего распределения равномерно разделены, однако они должны быть разнесены по отношению к значениям тета, которые сформировали распределение в первую очередь , используя следующий код:
import numpy as np
import matplotlib.pyplot as plt
data = np.load('dist.npy')
thetavals=np.linspace(0,2*np.pi,1001)
plt.xlabel(r'$\theta$')
plt.ylabel(r'$P(\theta)$')
plt.plot(thetavals,data)
plt.show()
integralvalue=np.trapz(data,thetavals)
print('The integral of this distribution results in: ',integralvalue)
, как и ожидалось, получается число меньше 1.