def sample(self, n=1):
counts = np.random.multinomial(n, self.weights, size=1)
samples = np.empty((n, len(self.means[0])))
j = 0
for i in range(len(self.means)):
samples[j:j+counts[i]] = stats.multivariate_normal.rvs(mean=self.means[i], cov=self.covs[i], size=counts[i])
j += counts[i]
np.shuffle(samples)
return samples
评论列表
文章目录