我是Python和Numpy的新手......而且我被困了。我试图从现有numpy数组中的元素的日志返回创建一个新的numpy数组(即新数组=旧数组(使用ln(x / x-1))。我没有使用Pandas数据帧,因为我计划将回报的相关性(即"新阵列)纳入大型蒙特卡罗模拟。如果这不是正确的道路,请打开建议。
这是我在stackflow搜索中找到的最接近的结果,但它不起作用: What is the most efficient way to get log returns in numpy
我的猜测是我需要传入现有数组的元素,但我认为在Numpy中使用数组和函数是摆脱Pandas系列和Python基本代码的全部好处。感谢帮助和反馈!
代码链接(我是新的,所以stackflow赢了,让我嵌入图片):http://i.stack.imgur.com/wkf56.png
答案 0 :(得分: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]