用Numpy查找百分比变化

Lan*_*n G 0 python numpy

我正在编写一个函数以使用Numpy和函数调用查找百分比变化。到目前为止,我得到的是:

def change(a,b):
  answer = (np.subtract(a[b+1], a[b])) / a[b+1] * 100
  return answer

print(change(a,0))
Run Code Online (Sandbox Code Playgroud)

“ a”是我制作的数组,b是我要计算的索引/数字。

例如:

我的数组是

[[1,2,3,5,7]
 [1,4,5,6,7]
 [5,8,9,10,32]
 [3,5,6,13,11]]
Run Code Online (Sandbox Code Playgroud)

如何计算1到2(= 0.5)或1到4(= 0.75)或5.7等之间的百分比变化。

注意:我知道如何从数学上获得更改,我不确定如何在python / numpy中执行此操作。

sac*_*cuL 7

如果我正确理解,您正在尝试查找每一行的变化百分比,则可以执行以下操作:

>>> np.diff(a) / a[:,1:] * 100
Run Code Online (Sandbox Code Playgroud)

这给你:

array([[ 50.        ,  33.33333333,  40.        ,  28.57142857],
       [ 75.        ,  20.        ,  16.66666667,  14.28571429],
       [ 37.5       ,  11.11111111,  10.        ,  68.75      ],
       [ 40.        ,  16.66666667,  53.84615385, -18.18181818]])
Run Code Online (Sandbox Code Playgroud)

  • 不应该是“np.diff(a) / a[:,:-1] * 100”吗?假设OP试图测量从左到右的百分比变化?我相信这与“pd.DataFrame(a).pct_change(axis=1)”相同。 (4认同)