如何通过计算现有numpyarray中的元素来创建新的numpy数组

时间:2016-09-15 01:44:24

标签: python arrays numpy

我是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

1 个答案:

答案 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]