Отредактировал вопрос для уточнения
import numpy as np
tt = np.arange(0, 1000, 1)
st = np.arange(0, 10, 1)
def abc():
return lambda x: st[np.where(tt==x)] if (50 < x <100) else 0
print(abc()(tt))
Ожидается, что для данного длинного периодического временного ряда tt спериод 100 , функция abc () должна вывести значения в st для интервала 50-100, 150-200, 250-300 и выплевать 0 в другом месте.Что-то вроде ..
[0....0..st.....st.0.....0.st....st.0....0.st.....st]
Ранее задаваемый вопрос ....
Я унаследовал длинный код, в который мне нужно внести некоторые изменения.Базовый формат - это ряд функций, каждая из которых возвращает лямбда-функцию
def func1():
return lambda x: #some math with x, like x**2
def func2():
return lambda x: #some math with x, like np.sin(x)
и т. Д.
Эти функции снабжены временным рядом, t, массивом 1Dиз которого генерируется требуемая математическая функция.Он работает правильно.
Например,
import numpy as np
import matplotlib.pyplot as plt
t = np.arange(0, 100, 1)
def fun1():
return lambda x: x**2
print(fun1()(t))
plt.plot(t, fun1()(t))
plt.savefig('Graph.png')
Теперь я хочу импортировать / читать данные из внешнего файла в виде пары [время, значение] и использовать ее для создания новой математической функции.вместо того, чтобы делать математику в самой функции, как раньше.
После чтения из файла я говорю:
time = [0, 0.1, 0.2, ..... 1000.0]
value = [v1, v2, ...........vn]
Я хочу сделать
def new_func():
return lambda x: "*Looking for an answer*"
Так что, если я вызову new_func () (t), я получу значение в качестве вывода
Я попробовал np.where и попытался определить подфункции.Но пока ничего не получалось.Поскольку я должен передать эту функцию другому коду, я не могу изменить основной формат.Пожалуйста, сообщите.