我试图高效地计算一个包含4个参数的python函数的多个实例,但是我找不到如何以不涉及本机python的slow for循环的方式将函数映射到多个输入值。在
下面是一个我只调用一次函数(即一次观察)的例子。在
from scipy.stats.mvn import mvnun
lower_bounds_one_obs = np.full(5, -1)
upper_bounds_one_obs = np.full(5, 1)
cov_mtx = np.eye(5)
means = np.zeros(5)
single_result = mvnun(lower_bounds_one_obs, upper_bounds_one_obs, means, cov_mtx)[0]
print(single_result)
为了考虑上下文,mvnun
函数计算上下界之间多元正态分布的矩形CDF。在这个特定的例子中,上界和下界有5个元素。在
我要做的是计算一个下界和上界数组的mvnun
,但总是使用相同的means
和{
换句话说,我想要两个主输入数组,lower_bounds
和{lower_bounds[0]
和upper_bounds[0]
,然后是{lower_bounds[999]
和{
在scipy的文档中,我发现我可以对这个函数进行矢量化/映射,但只限于上限,使下限固定。可以这样做:
^{pr2}$这样,mvnun
将使用一个固定的下界进行多次求值,并迭代upper_bound
的所有1000行。在
有人知道如何调整上面的代码片段,这样我就可以使用一个下界的数组,而不是固定的下界?在
谢谢!在
附言:这个问题是对this的一点更新。这里也有一些有趣的见解here,但是它们提供的解决方案非常慢,因为它们使用常规的python循环。{a3}更多想法。在
仅供参考。 不确定它是否足够有效。在我的机器上,它比
np.fromiter
和pythonmap
结合起来要快一点。在相关问题 更多 >
编程相关推荐