Простая проблема:
Почему
import numpy as np
f = np.sin(x)
print(f(0.3))
вернуть ошибку; тогда как
import numpy as np
print(np.sin(0.3))
не?
Предположим, например, я хотел сохранить f как:
f(x) = sin(x) + 2*sin(3.4*x)
Как мне это сделать? Приносим извинения, если этот вопрос слишком простой - возможно, мне стоило опубликовать его на StackExchange.
def f(x): ...
- это обычный способ определения функции в Python. В numpy нет особого способа математики.
f = np.sin(x)
присваивает np.sin(x)
возвращаемое значение x
(которое невозможно даже вычислить, потому что f
не определен). Даже если бы был определен x
, f(0.3)
завершился бы ошибкой, поскольку число с плавающей запятой не вызывается.
Вы хотели сделать f = np.sin
.
import numpy as np
f = np.sin
print(f(0.3))
# 0.295520206661
Отлично - спасибо. Предположим, я ищу store sin (x) + sin (3.456x) - есть ли простой способ сделать это?
@AndrewWhelan Да, вы можете использовать def
: def f(x): return sin(x) + sin(3.4 * x)
Если я правильно понимаю, вам нужна функция lambda
:
f = lambda x: np.sin(x) + np.sin(3.456 * x)
print(f(0.3))
Более подробную информацию о lambda
, если вы не знакомы, можно найти здесь
На самом деле PEP 8 считает, что это не Pythonic. Названные лямбды не одобряются. Вместо этого вы должны использовать def
.
Большое спасибо - очень ценю конкретный ответ и отсутствие снисходительности! Я буду писать в StackExchange в будущем для простых вопросов.
@DeepSpace - правда, но PEP 8 - это больше то, что вы бы назвали «руководящими принципами», чем фактические правила (бессовестная ссылка на Пиратов Карибского моря)
f
- это число, а не функция