2016-09-15 51 views
0

我是Python和Numpy的新手...我被卡住了。我試圖從現有的numpy數組中的元素的日誌返回中創建一個新的numpy數組(即新數組=舊數組(使用ln(x/x-1))。我沒有使用Pandas數據框,因爲我計劃將收益的相關性(即「新陣列」)合併到一個大的蒙特卡羅仿真中。如果這不是正確的路徑,請提供建議。如何從現有numpyarray中的元素計算創建新的numpy數組

這是我在棧流搜索中發現的最接近的結果,但它不起作用: What is the most efficient way to get log returns in numpy

我的猜測是我需要傳遞現有數組的元素,但我認爲在Numpy中使用數組和函數是擺脫Pandas系列和Python基本代碼的全部好處。 !

代碼的鏈接(我新,因此stackflow不會讓我嵌入圖像):http://i.stack.imgur.com/wkf56.png

回答

1

numpy的爲log功能,可以直接將其應用到一個數組。返回值將是一個相同形狀的新數組。請記住,輸入應爲dtype == float的正值數組。

import numpy 
old_array = numpy.random.random(5.) * 10. 

new_array = numpy.log(old_array/(old_array - 1.)) 

print type(old_array) 
# <type 'numpy.ndarray'> 
print old_array.dtype 
# float64 
print old_array 
# [ 8.56610175 6.40508542 2.00956942 3.33666968 8.90183905] 
print new_array 
# [ 0.12413478 0.16975202 0.68839656 0.35624651 0.11916237] 
+0

我接收輸出,看起來像當我用你的建議:陣列([[ - INF], [-INF], [-INF], [-INF], [-INF] , [-inf], – tdubya123

+0

'log(0。)== -inf',輸出結果讓我覺得'old_array'是滿了零。 –

+0

請參閱我的第一篇文章中的鏈接到我代碼的圖片使用。我看到「old array」(又名cl_1_array)的值。 – tdubya123

相關問題