我正在尝试在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和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'
编辑代码后,导入sys、scipy.stats和numpy模块。
定义一个名为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()))
以下错误信息被返回:
属性错误:'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)
return(cdf_rand); return(cdf)
中的意思是什么?Python 在第一个return
后就离开了函数,所以你根本没有返回cdf
。不过,你可以将其作为元组或列表返回,例如return((cdf_rand, cdf))
或return([cdf_rand, cdf])
。 - Rubens