неизвестная библиотека при модульизации кода python

#python #pandas

#python #pandas

Вопрос:

Я пытаюсь модулировать свой код на Python.

В моем основном коде the notebook я вставляю это :

 import numpy as np
import pandas as pd
from pandas import DataFrame
import my_math
df["std_line_amount_log_normal"] = df["std_line_amount"].apply(lambda f: my_math.feature_log_normalize(f))
  

И я создаю модуль с именем «my_math» как внешний файл .py: вот код :

 def feature_std_normalize(f):
    return (f - mu) / std

def feature_log_normalize(f):
   # return (f - mu) / std
    return np.log(f 1)
  

Когда я запускаю это утверждение в своей записной книжке :

 df["std_line_amount_log_normal"] = df["std_line_amount"].apply(lambda f: my_math.feature_log_normalize(f))
  

Я получаю эту ошибку :

 ---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-90-32256b03bfa2> in <module>()
----> 1 df["std_line_amount_log_normal"] = df["std_line_amount"].apply(lambda f: my_math.feature_log_normalize(f))

~/anaconda3/envs/python3/lib/python3.6/site-packages/pandas/core/series.py in apply(self, func, convert_dtype, args, **kwds)
   2549             else:
   2550                 values = self.asobject
-> 2551                 mapped = lib.map_infer(values, f, convert=convert_dtype)
   2552 
   2553         if len(mapped) and isinstance(mapped[0], Series):

pandas/_libs/src/inference.pyx in pandas._libs.lib.map_infer()

<ipython-input-90-32256b03bfa2> in <lambda>(f)
----> 1 df["std_line_amount_log_normal"] = df["std_line_amount"].apply(lambda f: my_math.feature_log_normalize(f))

~/SageMaker/my_math.py in feature_log_normalize(f)
     10 
     11 def feature_log_normalize(f):
---> 12    # return (f - mu) / std
     13     return np.log(f 1)
     14 

NameError: name 'np' is not defined
  

Может, вы поможете мне решить эту проблему, пожалуйста?

Спасибо

Ответ №1:

Попробуйте импортировать numpy также во внешний файл .py, чтобы:

 import numpy as np
def feature_std_normalize(f):
    return (f - mu) / std

def feature_log_normalize(f):
   # return (f - mu) / std
    return np.log(f 1)
  

Комментарии:

1. Просто для пробы — используйте что-нибудь, что использует numpy в вашем основном файле. Например, инициализируйте пустой массив result = numpy.zeros(shape=(5,2)) или что-то подобное, чтобы проверить, правильно ли работает ваша библиотека.

Ответ №2:

убедитесь, что вы установили NumPy для Python 3, возможно, вы использовали установку для Python 2 в своем предыдущем коде. Надеюсь, это поможет