【发布时间】:2013-07-14 15:27:09
【问题描述】:
我在 python 中创建连续分布时遇到了麻烦,它真的开始让我烦恼。我已经阅读并重新阅读 this python guide (scipy guide) 并没有解决我的问题。
我的代码如下:
import sys
import scipy.stats
import numpy
def CDF_Random(N,NE,E,SE,S,SW,W,NW,Iterations):
WindDir = [0,45,90,135,180,225,270,315]
Freq = N,NE,E,SE,S,SW,W,NW
mydist = scipy.stats.rv_continuous(#My problem is what to write here)
cdf_rand=mydist.rvs(size=Iterations)
return (cdf_rand)
if __name__ == '__main__':
N = float(sys.argv[1])
NE = float(sys.argv[2])
E = float(sys.argv[3])
SE = float(sys.argv[4])
S = float(sys.argv[5])
SW = float(sys.argv[6])
W = float(sys.argv[7])
NW = float(sys.argv[8])
Iterations = float(sys.argv[9])
numpy.set_printoptions(threshold=Iterations)
sys.stdout.write(str(CDF_Random(N,NE,E,SE,S,SW,W,NW,Iterations)))
如果您阅读了代码,您会看到,我的问题是知道在括号中放入什么来创建连续分布。 scipy.stats.rv_continuous(#what to put here).
我尝试了很多不同的东西,主要是this document(scipy guide) 中建议的那些,比如设置我的上限和下限值a=,b= 将其设置为pdf 或ppf。我已经尝试使用在命令行中输入的[arrays],或者只是我在代码本身中写入的那些。
我从命令行运行这个命令
python C:\Users\...\CDF.py 0.01 0.01 0.01 0.01 0.01 0.93 0.01 0.01 10
每次我得到;RuntimeError:maximum recursion depth exceeded
我曾尝试将递归深度重置为不同的值,但这不起作用或使 python 崩溃。
sys.setrecursionlimit(10000)
所以基本上应该在scipy.stats.rv_continuous() 之后的括号中输入什么来创建[array] 的连续分布,称为WindDir 给定分布freq?
老实说,我已经通过 Google 和 stackoverflow 网站进行了很好的查看,使用关键字、带有标签的关键字和单独的标签进行搜索,但找不到解决方案。
编辑 1-期望的结果
我希望输出是0,360 或0,2pi 之间的实数
【问题讨论】:
-
您希望每次迭代的输出是什么?离散的主要风向,还是 [0,360) 范围内的实数?如果你想要一个离散的红衣主教,试试
numpy.random.choice(list('NEWS'),size=10,p=[0.1,0.1,0.1,0.7]) -
我希望它产生一个在
0,360或0,2pi范围内的实数,但使用列表是个好主意。
标签: python statistics distribution continuous