这是我的最小工作示例。很简单,我基本上得到了一个密度值 z
我想找到等高线上的任何一点。我是通过寻根来实现的。
import numpy as np
from scipy.stats import multivariate_normal
from scipy.optimize import root
# Define the density
mu = np.zeros(2)
Sigma = np.eye(2)
target = multivariate_normal(mu, Sigma)
# Contour value
z = target.pdf(target.rvs())
# Find a point on its contour
def func(x):
return target.pdf(x) - z
root(func, mu)
这将引发以下错误
typeerror:fsolve:“func”参数“func”的输入和输出形状不匹配。形状应为(2,),但为(1,)。
1条答案
按热度按时间jexiocij1#
文件
root
他说,fun
是求其根的向量函数。
我猜他们的意思是,乐趣是从ndim->ndimMap而不是从ndim->1Map。
所以一个选择是两个人为地破坏你的功能来满足这个要求。
另一种选择是使用
minimize
而不是root
.此外,我建议使用另一个初步猜测。在我看来,对于你的例子有很多可能的解决方案,所以请注意这一点。