【发布时间】:2021-08-14 12:18:36
【问题描述】:
我想计算一个点相对于 [-1, 1] x [-1, 1] 上的均匀分布的密度。我试过这个:
import numpy as np
from scipy.stats import uniform
x = np.zeros(2)
uniform(loc=np.array([-1, -1]), scale=np.array([2, 2])).pdf(x)
但这会返回一个二维向量而不是一个标量值。
我能想到的只有
0.25 * np.all(np.abs(x) <= 2)
如果能更快地得到一些东西会很好。就一般功能而言,这是我能做到的最好的。
def multivariate_uniform(x, lows, highs):
return np.all((lows <= x) & (x <= highs)) / np.prod(highs - lows)
【问题讨论】:
-
如果两个均匀分布是独立的,则您有一个封闭形式的解决方案。更一般地说,在 scipy this 中创建自定义多元分布可能会有所帮助
-
它返回一个二维向量,因为
x = np.zeros(2)是一个二维向量。我觉得uniform只能用来定义简单的均匀分布。 -
@jasonwong 那你会怎么做?
标签: python numpy scipy distribution