2016-02-26 115 views
0

以下是我試圖用它來得到我的結果的代碼,我得到了一個錯誤:計算回報率內部收益率

import numpy 

array = [-1000,0,0,1094.60,0,0,1094.60] 

for b in array: 
    a = round(numpy.irr(array), b-1) * 100 
print (round(a,2)) 

錯誤:

TypeError: 'float' object cannot be interpreted as an integer 

但是,只是替換「b-1」使我的代碼可以工作,但我不能使用它,因爲數組可能儘可能大或者儘可能小。我不能手動輸入數字來代替「b-1」。以下是相同的工作代碼。

import numpy 

array = [-1000,0,0,1094.60,0,0,1094.60] 

for b in array: 
    a = round(numpy.irr(array), 6) * 100 
print (round(a,2)) 

我需要一種方法來自動執行任何大小的數組。

回答

0

您得到的錯誤是因爲您試圖將速率舍入到1093.60小數位(即第4次迭代的b-1)。

numpy.arr適用於任何大小的陣列。你不必給它一個大小(你沒有)。我收集到你試圖打印利率的百分比,四捨五入到小數點後兩位。使用這個來代替:

rate = numpy.irr(array) * 100 
print "rate =", round(rate, 2) 

在我給你前面的代碼結尾使用此給出了這樣的輸出進行比較:

Present Value (P) at rate 0.0125 = 0.217803365612 
Present Value (P) at rate 0.01875 = -0.143198101517 
Present Value (P) at rate 0.015625 = 0.0349275148787 
Present Value (P) at rate 0.0171875 = -0.0547196000329 
Present Value (P) at rate 0.01640625 = -0.0100432897584 
Present Value (P) at rate 0.016015625 = 0.0124051532756 
Present Value (P) at rate 0.0162109375 = 0.00117171042648 
rate = 1.62 
+0

好。這就是它。現在,我可以使用我之前發佈的相同代碼來使所有內容都正確嗎?或沒有 ?因爲我使用的是相同的代碼,所以我沒有爲「netflow」獲取相同的值。但是,當我在紙上做它時,它與我的答案相匹配。 – Master

+0

請說清楚。你問我是否可以使用相同的代碼,但是說明相同的代碼不會給你相同的值。我幾乎無法檢查原始數據,因爲該帖子似乎已消失,並且使用了不同的帳戶。 – Prune

+0

我不是說原來的代碼。最後的代碼我有這個鏈接:http://stackoverflow.com/questions/35661992/how-do-i-formulate-an-equation-so-that-it-calculates-my-i-value/35662689#35662689你現在可以在那裏回答 – Master