Ошибка вызова функции в Python - PullRequest
0 голосов
/ 24 июня 2018

У меня есть одномерный массив 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 голосов
/ 24 июня 2018

Я заставил его работать так:

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];

Если есть лучший способ, пожалуйста, дайте мне знать. Благодарю.

0 голосов
/ 24 июня 2018

В некоторых языках программирования, таких как Matlab, индексы являются ссылками с круглыми скобками.В Python индексы представлены в квадратных скобках.

Если у меня есть список, mylist = [1,2,3,4], я ссылаюсь на такие элементы:

> mylist[1]
  2

Когда вы говорите y(idxN), думает Pythonвы пытаетесь передать idxN в качестве аргумента функцию с именем y.

...