我正在尝试将eval()与Scipy库中的函数一起使用。
我正在使用一个numpy数组。
以下是不同的类型:
print(type(cptrace))
print(type(cptrace.data))
print(type(cptrace.data[0]))
我回来了
<class 'obspy.core.trace.Trace'>
<class 'numpy.ndarray'>
<class 'numpy.int32'>
cptrace.data是[323 322 320 ... 177 175 175]
我想在数据上应用scipy.signal.welch函数。
当我直接做y时,效果很好:
f, pxx= scipy.signal.welch(cptrace)
但是实际上我需要使用eval(),因为函数的类型可以不同,并且用户可以通过下拉菜单选择。
所以我尝试了
f, pxx= eval("scipy.signal.welch("+cptrace.data+")")
返回了:
TypeError跟踪(最近一次通话) 在()中 9打印(类型(cptrace.data [0])) 10 ---> 11 f,pxx = eval(“ scipy.signal.welch(” + cptrace.data +“)”)
TypeError:ufunc'add'不包含签名匹配类型为dtype('的循环
我也尝试过
f, pxx= eval("scipy.signal.welch("+np.array_repr(cptrace.data)+")")
这次,我得到了:
NameError跟踪(最近一次通话) 在()中 9打印(类型(cptrace.data [0])) 10 ---> 11 f,pxx = eval(“ scipy.signal.welch(” + np.array_repr(cptrace.data)+“)”)
module()中的字符串
NameError:名称'int32'未定义
我真的不知道如何解决我的问题。 感谢您的帮助。