计算numpy数组的平均增长率的最快方法

时间:2015-12-29 18:20:55

标签: python arrays numpy

给定一个数组如:

import numpy as np
a = np.array([[1,2,3,4,5],[6,7,8,9,10]])

计算每行增长率的最快方法是什么,以便我的结果分别为0.520833333333333260.13640873015873009

我尝试使用:

>>> np.nanmean(np.rate(1,0,-a[:-1],a[1:]), axis=0)
array([ 5.        ,  2.5       ,  1.66666667,  1.25      ,  1.        ])

但当然它没有产生正确的结果,我也不知道如何使轴适合numpy.rate功能。

2 个答案:

答案 0 :(得分:4)

In [262]: a = np.array([[1,2,3,4,5],[6,7,8,9,10]]).astype(float)
In [263]: np.nanmean((a[:, 1:]/a[:, :-1]), axis=1) - 1
Out[263]: array([ 0.52083333,  0.13640873])

答案 1 :(得分:3)

要使用numpy.rate采取您的方法,您需要正确索引a数组(分别考虑所有行)并使用axis=1

In [6]: np.nanmean(np.rate(1,0,-a[:,:-1],a[:,1:]), axis=1)
Out[6]: array([ 0.52083333,  0.13640873])