Python np.梯度函数应用中的不一致性
以前我一直在手工计算一组点之间的梯度。我碰巧看到numpy库中有一个np.gradient函数 我很兴奋地在我的本地机器上尝试了这个,它的工作原理如下:Python np.梯度函数应用中的不一致性,python,python-3.x,numpy,gradient,Python,Python 3.x,Numpy,Gradient,以前我一直在手工计算一组点之间的梯度。我碰巧看到numpy库中有一个np.gradient函数 我很兴奋地在我的本地机器上尝试了这个,它的工作原理如下: dataframe['Scrubber_Gradient_20m_mean'] = np.gradient(dataframe['ScrubberLevel'].rolling(center=False,window=2).mean()) 这返回了滚动梯度值,这正是我想要的。但是,我现在已将一些代码移动到Spyder环境上的AWS部署中,该环
dataframe['Scrubber_Gradient_20m_mean'] = np.gradient(dataframe['ScrubberLevel'].rolling(center=False,window=2).mean())
这返回了滚动梯度值,这正是我想要的。但是,我现在已将一些代码移动到Spyder环境上的AWS部署中,该环境与我的本地计算机具有相同的numpy版本,即使代码相同,也会突然抛出一个错误:
ValueError: Shape of array too small to calculate a numerical gradient, at least (edge_order + 1) elements are required.
然而,对我来说没有意义的是,当我在函数的外部运行代码时,只要在控制台中运行,计算就可以正常工作。阵列不是“太小”,至少从我看到的情况来看不是这样
我不明白为什么会这样。有没有人会对这种潜在的不一致行为有任何理由
到目前为止,我尝试了以下方法:
df_condabri_central_T1['Scrubber_Gradient_hour_mean'] = np.gradient(df_condabri_central_T1['ScrubberLevel'].rolling(center=False,window=6).mean())
这是我用于在AWS Spyder环境中的函数中运行的代码:
def feature_eng(dataframe):
#There are other features but for the sake of my problem I have restricted it to this variable
dataframe['ScrubberLevel'] = np.gradient(dataframe['ScrubberLevel'].rolling(center=False,window=2).mean())
return dataframe
现在,当我在AWS Spyder的控制台中运行此时,没有如下所示的问题。
但是,当我尝试通过我的函数运行此功能时,我得到以下结果:
您是否可以使用生成成功和失败的虚拟数据帧编辑您的帖子,以包含可复制的可复制代码?(更好的是,把你的虚拟数据框切分成一个小对象,你可以粘贴到你的问题中。现在你错过了M in。)@DSM-非常感谢你指出这一点!在试图重新创建问题以便其他任何人都可以复制此问题的过程中,我碰巧仔细检查了我的函数,发现我有一个额外的过滤器,它似乎有故障,并返回了0帧长度。记住这一点,抛出的错误消息完全有意义!非常感谢你!