【发布时间】:2018-10-26 01:54:12
【问题描述】:
编辑问题以供澄清
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]
以前问过....
我继承了一个长代码,我需要对其进行一些修改。基本格式是多个函数,每个函数返回一个 lambda 函数
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,一个 numpy 一维数组,从中生成所需的数学函数。它工作正常。
例如
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, value] 对导入/读取,并使用它来生成新的数学函数,而不是像以前那样在函数本身中进行数学运算。
从文件中读取后,我说,
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),我会得到 value 作为输出
我尝试过 np.where,并尝试定义子函数。但到目前为止没有任何效果。因为我必须将此函数传递给另一个代码,所以我无法更改基本格式。请指教。
【问题讨论】:
-
“生成”这个词在这里有一个很奇怪的用法。给出一个具体的例子,其中包含一个包含实际数字和你“生成”的实际函数的实际文件。
-
刚刚编辑了一个有效的简单示例。
标签: python python-3.x numpy lambda