У меня есть две функции, и мне нужна переменная, которую я вычисляю в первой, для вычисления во второй функции. Мой минимальный рабочий пример -
import numpy.ma as ma
import numpy as np
data_1 = [0,2,4,6,8,10,12,14,16,18]
error_1 = [0,1,2,3,4,5,6,7,8,9]
def mask(data,error):
product = np.multiply(data,error)
def plot(perc):
result = ma.masked_array(product, product >= (np.percentile(product, perc)))
mask(data_1,error_1)
plot(30)
plot(60)
plot(90)
Это дает мне ошибку
NameError: name 'product' is not defined
Я знаю, что «продукт» местный. Давайте представим, что для умножения обоих списков требуется много вычислительного времени из-за высокого разрешения и тому подобного. Вот почему я хочу поместить это в отдельную функцию. Конечно, я мог бы поместить все в одну функцию следующим образом:
import numpy.ma as ma
import numpy as np
data_1 = [0,2,4,6,8,10,12,14,16,18]
error_1 = [0,1,2,3,4,5,6,7,8,9]
def mask(data,error,perc):
product = np.multiply(data,error)
result = ma.masked_array(product, product >= (np.percentile(product, perc)))
маска (данные_1, error_1,30)
Маска (данные_1, error_1,60)
Маска (данные_1, error_1,90)
но при этом я вычислю продукт три раза, и сценарий будет работать вечно. Теперь понятнее, в чем моя проблема?