Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python np.梯度函数应用中的不一致性_Python_Python 3.x_Numpy_Gradient - Fatal编程技术网

Python np.梯度函数应用中的不一致性

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部署中,该环

以前我一直在手工计算一组点之间的梯度。我碰巧看到numpy库中有一个np.gradient函数

我很兴奋地在我的本地机器上尝试了这个,它的工作原理如下:

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.

然而,对我来说没有意义的是,当我在函数的外部运行代码时,只要在控制台中运行,计算就可以正常工作。阵列不是“太小”,至少从我看到的情况来看不是这样

我不明白为什么会这样。有没有人会对这种潜在的不一致行为有任何理由

到目前为止,我尝试了以下方法:

  • 检查两个AWS上的Python版本/Numpy版本是否相同 服务器和本地计算机
  • 确认内部功能/外部功能的两个数据集相同
  • 检查梯度功能内部功能/外部功能
  • 我的numpy版本是:1.15.1,在我的本地机器和AWS服务器上

    我附加了一个虚拟数据的快照,以便有希望复制它。请使用洗涤器级别列

    这是我用来在本地计算机上运行的代码:

    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帧长度。记住这一点,抛出的错误消息完全有意义!非常感谢你!