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
ます。上記のコードに示すように、配列である場合もあれば、1 つの整数である場合もあれば、両方が 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 を編集した後
デフ 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' がありません
デフ 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'
また、たとえば配列を最初の変数として、整数と浮動小数点数を 2 番目の変数として使用するなど、他の組み合わせも試しました。
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)