语法函数定义中的错误

时间:2014-07-22 19:21:49

标签: python arrays function numpy integration

我试图定义一个函数,该函数将集成一个以数组作为输入的函数。我知道这可能是不可能的,并且想知道如何协调这一点?以下是相关代码:

def mp(SNR2, *events):
    events = np.asarray(events).reshape((Ntrig,Nsamp))
    bessel = special.iv(0,np.sqrt(x*SNR2(event)))
    exp = np.exp(-0.5*(x+SNR2(event)))
    I = integrate.quad(lambda x: exp*bessel,0,SNRth**2)[0]
    return np.asarray([np.array[I for event in events[i]] for i in range(len(events))]).reshape(events.shape)

events是一个(37,100)数组。 SNR2是先前定义的函数,SNRth只是一个浮点数。

2 个答案:

答案 0 :(得分:0)

你的意思是(1)从np.array获得一个项目(可能不是......)或(2)打电话给np.array吗?

(1)

def mp(SNR2, *events):
    ...
    return np.asarray([np.array[[I for event in events[i]]] for i in range(len(events))]).reshape(events.shape)

(2)

def mp(SNR2, *events):
    ...
    return np.asarray([np.array([I for event in events[i]]) for i in range(len(events))]).reshape(events.shape)

答案 1 :(得分:0)

()之后似乎缺少一些np.array

np.array[integrate.quad(lambda: ...,0,SNRth**2)[0] for event in events[i]]

这样,[...]表达式(列表推导)被解释为列表的索引或切片,在此上下文中... for event in ...是无效的语法。

您可能想要从列表推导中创建np.array。试试这个:

np.array([integrate.quad(lambda: ...,0,SNRth**2)[0] for event in events[i]])

这将消除语法错误,但此表达式中可能仍存在逻辑错误。虽然Python可能很容易编写各种复杂的单行程序,但请自己帮忙并将其分成几行,这样编译器就可以为您提供更准确的错误消息,并且可以检查中间结果。