Ранее я вычислял градиент между множеством точек вручную. Я случайно увидел, что в библиотеке numpy существует функция np.gradient.
Взволнованно, я попробовал это на моей локальной машине, и это сработало, как показано ниже:
dataframe['Scrubber_Gradient_20m_mean'] = np.gradient(dataframe['ScrubberLevel'].rolling(center=False,window=2).mean())
Это вернуло значения скользящего градиента, что было именно то, что я был после. Однако теперь я перенес часть своего кода в развертывание AWS в среде Spyder с той же версией, что и на моей локальной машине, и, хотя код такой же, внезапно выдается ошибка:
ValueError: Shape of array too small to calculate a numerical gradient, at least (edge_order + 1) elements are required.
Однако, что не имеет смысла для меня, так это то, что когда я запускаю код вне функции и просто в консоли - вычисления работают нормально. Массив не «слишком мал», по крайней мере, не из того, что я вижу.
Я не могу понять причину этого. У кого-нибудь есть причины для такого потенциально непоследовательного поведения?
До сих пор я пробовал следующее:
- Убедитесь, что обе версии Python / Numpy одинаковы на обоих AWS
Сервер и локальный компьютер
- Убедитесь, что оба набора данных одинаковы как внутри, так и вне функции
- Проверка функции градиента внутри / вне функции
Моя цифровая версия: 1.15.1 как на моей локальной машине, так и на сервере AWS.
Я приложил снимок фиктивных данных, чтобы можно было их воспроизвести. Пожалуйста, используйте столбец ScrubberLevel. Ссылка на данные
Это код, который я использовал для запуска на моей локальной машине:
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, нет проблем, как показано ниже.
Однако, когда я пытаюсь запустить это через свою функцию, я получаю следующее: