【发布时间】:2020-11-04 19:25:13
【问题描述】:
我有两个 3D 数组 mean 和 std,它们的名称分别包含平均值和标准差。两个数组具有相同的形状,因此这两个表中每个位置的平均值和标准偏差之间存在对应关系。我想,对于数组的每个位置,使用mean 中的值和std 中的相应值来定义一个截断的正态分布,我从中绘制一个值,并将其存储在另一个数组中的相应位置@ 987654325@ 与mean 和std 具有相同的形状。
当然,我也想过使用scipy.stats.truncnorm,但是我遇到了广播问题,我对如何优雅地使用它有点迷茫。 for 循环会花费太多时间,因为其目的是将这个过程应用于非常大的数组。
作为一个简单的例子,让我们考虑
mean = [[[4 0]
[1 3]]
[[3 1]
[3 4]]]
std = [[[0.84700368 0.78628226]
[0.54893714 0.68086502]]
[[0.23237688 0.46543749]
[0.01420151 0.25461322]]]
为简单起见,我将p 初始化为一个包含索引的数组:
p = [[[1 2]
[3 4]]
[[5 6]
[7 8]]]
例如,我想将 p 中的值 5 替换为从均值 3 和标准差的截断正态分布(比如在用户选择的值 lower 和 upper 之间截断)随机抽取的值0.23237688,在mean 和std 的相应位置给出。目的是一次将此过程应用于所有值。
提前感谢您的回答!
【问题讨论】:
-
在给定均值和标准差的值对的情况下,您是如何计算截断正态分布的?