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

如何在Python中生成指定形状的正态分布Sobol序列数组?

使用Scipy的MultivariateNormalQMC生成指定形状的正态分布序列

要生成和Z = np.random.normal(0.0, 1.0, [5, 10, 4])等价的Sobol序列正态分布数组,核心是理解MultivariateNormalQMC的输出结构,再通过重塑形状匹配目标维度,具体实现如下:

核心逻辑

MultivariateNormalQMC.random(n_samples)会输出(n_samples, dim)形状的数组,其中dim对应多元正态分布的维度(即目标数组的最后一维4)。目标数组的总独立样本数为5*10=50,生成后将结果重塑为(5,10,4)即可。

代码实现

import numpy as np
from scipy.stats.qmc import MultivariateNormalQMC

# 定义标准多元正态参数:4维全0均值,4x4单位协方差矩阵(保证各维度独立同分布)
mean = np.zeros(4)
cov = np.eye(4)

# 初始化基于Sobol序列的多元正态QMC生成器
mvn_qmc = MultivariateNormalQMC(mean=mean, cov=cov, engine="sobol")

# 生成50个4维样本(对应目标数组的5*10个元素组)
samples = mvn_qmc.random(n_samples=5*10)

# 重塑为目标形状(5,10,4)
Z_qmc = samples.reshape(5, 10, 4)

# 验证形状
print(Z_qmc.shape)  # 输出: (5, 10, 4)

关键说明

  • engine="sobol"显式指定使用Sobol序列(这是MultivariateNormalQMC的默认引擎,可省略,但声明后更清晰)。
  • 单位协方差矩阵np.eye(4)确保每个维度的变量独立服从标准正态,和np.random.normal的行为完全一致。
  • 重塑形状时保留最后一维的维度不变,前两维按目标结构拆分总样本数即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 12:27:08