我有一个带有两个+/-元素的一维数组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
答案 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];
如果有更好的方法,请告诉我。谢谢。