我正在尝试在 python 中创建累积分布,但不断得到AttributeError
,我的代码如下:
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]
cdf=scipy.stats.rv_discrete.cdf(WindDir,Freq)
cdf_rand=cdf.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)))
我得到的错误取决于我使用的值WindDir amd Freq
,有时它们是数组,如上面的代码所示,有时其中一个是单个整数,或者它们都是或一个可能是 0 和 1 之间的数字。
AttributeError: 'int' object has no attribute '_fix_loc'
或者
AttributeError: 'list' object has no attribute '_fix_loc'
或者
AttributeError: 'float' object has no attribute '_fix_loc'
我已经浏览了谷歌搜索和这个网站,但我没有运气,我也花了很长时间改变我的输入和使用 python 网站。
编辑 我尝试过的输入:请注意,由于输入数组的长度不同,因此需要为某些输入编辑代码。这些都是通过命令提示符运行的
python C:\Users\...\python\CDF.py 0.01 0.02 0.03 0.4 0.98 0.99 1 5
这给出了这个错误
AttributeError: 'list' object has no attribute '_fix_loc'
编辑完代码 import sys import scipy.stats import numpy
def CDF_Random():
cdf=scipy.stats.rv_discrete.cdf(5,1)
cdf_rand=cdf.rvs(size=Iterations)
return (cdf_rand)
return (cdf)
if __name__ == '__main__':
sys.stdout.write(str(CDF_Random()))
返回以下错误
AttributeError:“int”对象没有属性“_fix_loc”
def CDF_Random():
cdf=scipy.stats.rv_discrete.cdf(0.5,1)
cdf_rand=cdf.rvs(size=Iterations)
return (cdf_rand)
return (cdf)
if __name__ == '__main__':
sys.stdout.write(str(CDF_Random()))
出现此错误
AttributeError: 'float' object has no attribute '_fix_loc'
我还尝试了其他组合,例如将数组作为第一个变量,将整数和浮点数作为第二个变量。
cdf=scipy.stats.rv_discrete.cdf([array],0.5)
cdf=scipy.stats.rv_discrete.cdf([array],[array])
cdf=scipy.stats.rv_discrete.cdf(4,[array])
cdf=scipy.stats.rv_discrete.cdf([array],5)