Python 使用numpy声明新的数学函数
一个简单的问题: 为什么Python 使用numpy声明新的数学函数,python,numpy,numpy-ndarray,Python,Numpy,Numpy Ndarray,一个简单的问题: 为什么 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上。f=np.sin(x)将np.sin(x)的返回值赋值给f(由于x未定义,因此无法计算)。
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上。f=np.sin(x)
将np.sin(x)
的返回值赋值给f
(由于x
未定义,因此无法计算)。即使定义了x
,f(0.3)
也会失败,因为不能调用浮点
你的意思是做f=np.sin
import numpy as np
f = np.sin
print(f(0.3))
# 0.295520206661
如果我正确理解您的用法,您需要一个
lambda
函数:
f = lambda x: np.sin(x) + np.sin(3.456 * x)
print(f(0.3))
如果您不熟悉
lambda
的更多详细信息,请访问非常好-谢谢。假设我正在寻找存储sin(x)+sin(3.456x)-有一种简单的方法吗?@andrewhelan是的,您可以使用def
:def(x):返回sin(x)+sin(3.4*x)
f
是一个数字而不是一个函数def(x):…
是python中定义函数的正常方法。在numpy中没有一种特殊的数学方法。这实际上被PEP8认为不是Pythonic。命名为lambda的人不受欢迎。相反,您应该使用def
。非常感谢您-我真的很感激您给出的具体答案,并且没有居高临下的态度!我以后会在StackExchange上发布一些简单的问题。@DeepSpace是真的,但PEP 8更多的是你所说的“指导原则”,而不是实际的规则(《加勒比海盗无耻》参考)