You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于(900*10)的均值和标准差生成任意数量的新样本点?

解决任意数量10维样本生成问题

问题根源

你的mean和std_dev是900个独立的10维分布参数(形状为(900,10)),当你设置size=(new_points_size,10)时,numpy的广播机制要求loc/scale的形状和size指定的输出形状兼容。只有当new_points_size=900时,两者维度完全匹配,才能正常生成对应数量的样本;其他数值会因维度不匹配触发报错。

解决方案

方案1:从现有900个分布中随机采样

如果你需要严格从这900个预设分布里生成指定数量的样本,可以先随机挑选分布,再生成对应样本:

import numpy as np

# 假设mean和std_dev是已有的(900,10)数组
mean = ... 
std_dev = ...
new_points_size = 1000

# 随机选择new_points_size个分布索引(允许重复挑选)
selected_indices = np.random.choice(900, size=new_points_size, replace=True)
# 提取选中分布的均值和标准差
selected_mean = mean[selected_indices]
selected_std = std_dev[selected_indices]
# 生成新样本
new_points = np.random.normal(loc=selected_mean, scale=selected_std)

生成的new_points形状为(new_points_size,10),每个样本都来自你提供的900个分布之一。

方案2:基于全局分布生成样本

如果不需要区分单个分布,可先计算10维空间的全局均值和标准差,再生成样本:

import numpy as np

mean = ... 
std_dev = ...
new_points_size = 1000

# 计算10维上的全局均值和标准差(可根据需求调整统计方式)
global_mean = mean.mean(axis=0)  # 形状(10,)
global_std = std_dev.mean(axis=0)
# 生成新样本
new_points = np.random.normal(loc=global_mean, scale=global_std, size=(new_points_size,10))

这种方式会基于所有分布的平均特征生成新样本,适合不需要保留单个分布特性的场景。

内容的提问来源于stack exchange,提问作者Nimesh ACHARYA

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 00:03:10