2013-07-10 41 views
1

我有一段python代碼,它在定義了輸入參數後將值返回給系統。我遇到了返回系統的樣本數量問題。Python沒有將所有值返回給系統,但用...替換它

我有下面的代碼位:

import sys 
import numpy.random 

def Weibull_Random(alpha,beta,Iterations): 

    a=alpha 
    b=beta 


    weibull_rand=numpy.random.weibull(a,[Iterations]) 

    rand_sample=((weibull_rand)*b) 

    return (rand_sample) 

if __name__ == '__main__': 
    alpha = float(sys.argv[1]) 
    beta = float(sys.argv[2]) 
    Iterations = float(sys.argv[3]) 
    sys.stdout.write(str(Weibull_Random(alpha,beta,Iterations))) 

樣本的數量是由Iterations定義,我們可以設置的α和β,以一定範圍的不同的數字可以說對於這個問題alpha=2beta=15。 如果Iterations = 1000或更少,則所有數字都會返回給系統。如果迭代數= 1001或更大,則系統返回

[ 15.33018892 3.22693971 10.02243413 ..., 8.87121152 14.29458731 
    15.13458017] 

有誰知道如何將所有值返回給系統?

我使用Windows 7和Python 3與Numpy和Scipy(pyzo2013b)。

回答

1

這是不相關的系統,而是由numpy採用的格式造成的。最簡單的解決方法是修改腳本調用numpy.set_printoptions,如:

if __name__ == '__main__': 
    alpha = float(sys.argv[1]) 
    beta = float(sys.argv[2]) 
    Iterations = float(sys.argv[3]) 
    numpy.set_printoptions(threshold=Iterations) # Force threshold to iteration count. 
    sys.stdout.write(str(Weibull_Random(alpha,beta,Iterations))) 

在這個片段中,我強迫numpy到總結的閾值設置爲迭代次數。

+0

謝謝Brett,這似乎解決了這個問題 – user2519890

0

替換最後一行如下,你會看到所有的值:

sys.stdout.write(str(Weibull_Random(alpha,beta,Iterations).tolist())) 
+0

感謝Falsetru這也做了竅門,它更快,但它不會讓我解釋數據如何在Matlab的另一端想要的,所以我用Brett的方式。 – user2519890

相關問題