为了账号安全,请及时绑定邮箱和手机立即绑定

使用 Numpy 查找百分比变化

使用 Numpy 查找百分比变化

忽然笑 2021-07-30 02:39:42
我正在编写一个函数来使用 Numpy 和函数调用来查找百分比变化。到目前为止,我得到的是:def change(a,b):  answer = (np.subtract(a[b+1], a[b])) / a[b+1] * 100  return answerprint(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 中执行此操作。
查看完整描述

3 回答

?
婷婷同学_

TA贡献1844条经验 获得超8个赞

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


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


查看完整回答
反对 回复 2021-08-03
?
qq_遁去的一_1

TA贡献1725条经验 获得超7个赞

我知道您在问这个问题时考虑到了 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)


查看完整回答
反对 回复 2021-08-03
?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

import numpy as np

a = np.array([[1,2,3,5,7],

              [1,4,5,6,7],

              [5,8,9,10,32],

              [3,5,6,13,11]])    

np.array([(i[:-1]/i[1:]) for i in a])


查看完整回答
反对 回复 2021-08-03
  • 3 回答
  • 0 关注
  • 154 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号