Python中的函数调用错误

时间:2018-06-24 15:12:27

标签: python syntax-error

我有一个带有两个+/-元素的一维数组X。我将它们的标志隔离如下:

idxN, idxP = X<0, X>=0

现在,我想创建一个其值取决于X的符号的数组。我试图对此进行计算,但它给出了字幕语法错误。

y(idxN) = [math.log(1+np.exp(x)) for x in X(idxN)]
y(idxP) = X(idxP)+[math.log(np.exp(-x)+1) for x in X(idxP)];

LHS作业是罪魁祸首吗?

谢谢。

[编辑]完整代码如下:

y = np.zeros(X.shape)
idxN, idxP = X<0, X>=0
y(idxN) = [math.log(1+np.exp(x)) for x in X(idxN)]
y(idxP) = X(idxP)+[math.log(np.exp(-x)+1) for x in X(idxP)];
return y

回溯是:

y(idxN) = [math.log(1+np.exp(x)) for x in X(idxN)]
  File "<ipython-input-63-9a4488f04660>", line 1
    y(idxN) = [math.log(1+np.exp(x)) for x in X(idxN)]
                                                      ^
SyntaxError: can't assign to function call

2 个答案:

答案 0 :(得分:1)

在某些编程语言(如Matlab)中,索引是带有括号的引用。在Python中,索引用方括号表示。

如果我有一个列表mylist = [1,2,3,4],我将引用如下元素:

> mylist[1]
  2

您说y(idxN)时,Python认为您正在尝试将idxN作为参数传递给名为y的函数。

答案 1 :(得分:0)

我让它像这样工作:

y = np.zeros(X.shape)
idxN, idxP = X<0, X>=0
yn,yp,xn,xp = y[idxN], y[idxP],X[idxN],X[idxP]
yn = [math.log(1+np.exp(x)) for x in xn]
yp = xp+[math.log(np.exp(-x)+1) for x in xp];

如果有更好的方法,请告诉我。谢谢。