Python 以数组向量作为a和b参数的scipy truncnorm

Python 以数组向量作为a和b参数的scipy truncnorm,python,arrays,numpy,scipy,Python,Arrays,Numpy,Scipy,因此,我需要使用Python中的truncnorm函数来评估下限为零的截断正态分布中值的可能性 由于truncnorm适用于标准正态分布,因此如果您使用自己的mu和sigma参数,则必须重新参数化a和ba和b被写成(myclip-mu)/sigma 我需要在mu和sigma的不同参数化下同时计算多个值,这意味着我必须将数组作为a和b的参数。但是,每次这样做时,我都会收到一条错误消息。下面是一些简化的示例代码: import numpy as np from scipy.stats import

因此,我需要使用Python中的
truncnorm
函数来评估下限为零的截断正态分布中值的可能性

由于
truncnorm
适用于标准正态分布,因此如果您使用自己的
mu
sigma
参数,则必须重新参数化
a
b
<代码>a和
b
被写成
(myclip-mu)/sigma

我需要在
mu
sigma
的不同参数化下同时计算多个值,这意味着我必须将数组作为
a
b
的参数。但是,每次这样做时,我都会收到一条错误消息。下面是一些简化的示例代码:

import numpy as np
from scipy.stats import truncnorm
v = np.array([5, 4])
mus = np.ones(2)
sigmas = np.ones(2)
a = (0 - mus) / sigmas
b = np.ones(2) * np.inf

like = truncnorm.pdf(vals, a, b, mus, sigmas)
我得到这个错误信息:

cond0 = self._argcheck(*args) & (scale > 0)
File "/Users/adamosth/anaconda/lib/python2.7/sitepackages/scipy/stats/_continuous_distns.py", line 3818, in _argcheck
if self.a > 0:
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

如果将
a
作为单个值输入,我没有问题,但这并不是我真正想要的。

在将scipy v0.13更新为v0.14后,我遇到了同样的问题。它仍然不能在v0.15中工作(我现在已经安装了)。所以我可以确认你的错误


目前,我使用一种变通方法,一个接一个地遍历所有值,这当然非常缓慢,而且不是真正的长期解决方案。我希望有人有更好的建议。

最近的scipy版本已经解决了这一问题。