2016-09-15 48 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

相关问题