使用 Numpy 查找百分比变化

新手上路,请多包涵

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

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

print(change(a,0))

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

例如:

我的数组是

[[1,2,3,5,7]
 [1,4,5,6,7]
 [5,8,9,10,32]
 [3,5,6,13,11]]

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

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

原文由 Landon G 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 439
2 个回答

如果我理解正确,你试图在每一行中找到百分比变化,那么你可以这样做:

 >>> np.diff(a) / a[:,1:] * 100

这给你:

 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]])

原文由 sacuL 发布,翻译遵循 CC BY-SA 4.0 许可协议

我知道你问过这个问题时心里想着 Numpy,并得到了上面的答案:

 import numpy as np
np.diff(a) / a[:,1:]

我试图用 Pandas 解决这个问题。对于那些有同样问题但使用 Pandas 而不是 Numpy 的人

import pandas as pd
data = [[1,2,3,4,5],
        [1,4,5,6,7],
        [5,8,9,10,32],
        [3,5,6,13,11]]

df = pd.DataFrame(data)
df_change = df.rolling(1,axis=1).sum().pct_change(axis=1)
print(df_change)

原文由 Prayson W. Daniel 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题