我试图通过继承rv_continuous
来生成2D均匀分布。
from scipy import stats
class uniform_2d(stats.rv_continuous):
def _pdf(self, x, y):
X, Y = np.meshgrid(x,y)
result = 1/(max(x)*max(y)) * np.ones_like(X)
return result
x = y = np.linspace(1,3,3)
uni = uniform_2d(name="uni")
pdf = uni.pdf(x,y)
fig = plt.figure(figsize=(9,5))
ax = fig.add_subplot(111)
ax.pcolor(X,Y,pdf)
尝试返回结果时失败,出现以下错误:
ValueError: object too deep for desired array
发生了什么?我的结果有形状(3,3)并且有numpy.ndarray
类 - 为什么我只能返回一个numpy.ndarray
?
scipy.stats
进行2D均匀分布?
答案 0 :(得分:3)
rv_continuous
仅适用于单变量分布。您可以查看scipy/stats/_multivariate.py
我们如何制作多变量分布对象。目前,没有共同的基类,只是一个预期的接口。