[英]Type check scipy.stats distributions with isinstance
我在列表中有几个 scipy.stats 分布。 我想通过 isinstance 检查每个分布是否均匀、正常或其他分布。 但是,所有这些分布的类型似乎都是 scipy.stats._distn_infrastructure.rv_continuous_frozen。 如何将制服与正态分布分开?
下面是一个最小的例子。
import scipy.stats
dist_u = scipy.stats.uniform(loc = 0, scale = 2) #an example distribution
# isinstance(dist_u, scipy.stats.uniform) #this does not work
isinstance(dist_u, type(scipy.stats.uniform(0,1))) #This returns True
isinstance(dist_u, type(scipy.stats.norm(0,1))) #This also returns True, I expected it to return False
type(dist_u) # gives scipy.stats._distn_infrastructure.rv_continuous_frozen
我使用了 python 3.10 和 scipy 1.9.0。
回答我自己的问题以防其他人需要知道。
dists = [scipy.stats.uniform(loc=-2, scale = 2), scipy.stats.norm(0, 1)] #some example distributions
for dist in dists:
if isinstance(dist.dist, type(scipy.stats.uniform)):
print("unif")
elif isinstance(dist.dist, type(scipy.stats.norm)):
print("norm")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.