给定一个数组如:
import numpy as np
a = np.array([[1,2,3,4,5],[6,7,8,9,10]])
计算每行增长率的最快方法是什么,以便我的结果分别为0.52083333333333326
和0.13640873015873009
。
我尝试使用:
>>> np.nanmean(np.rate(1,0,-a[:-1],a[1:]), axis=0)
array([ 5. , 2.5 , 1.66666667, 1.25 , 1. ])
但当然它没有产生正确的结果,我也不知道如何使轴适合numpy.rate
功能。
答案 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])