我正在尝试向量化标量函数
I am trying to vectorize the scalar function
这是我写的代码
def scalar_function(x, y):
"""
Returns the f(x,y) defined in the problem statement.
"""
if x<=y:
return (np.dot(x,y))
else:
return(x/y)
def vector_function(x, y):
"""
Make sure vector_function can deal with vector input x,y
"""
vfunc = np.vectorize(scalar_function(x,y))
return vfunc
我正在尝试做 as::scalar_function 只能处理标量输入,我们可以使用函数 np.vectorize() 将其转换为向量化函数。注意 np.vectorize() 的输入参数应该是一个标量函数,而 np.vectorize() 的输出是一个可以处理向量输入的新函数。
但是在 运行 之后我得到了一个错误
TypeError: unsupported operand type(s) for -: 'float' and 'vectorize'
现在不知道怎么办
NumPy as np
已经导入
谢谢
您可以为 vector_function 添加额外的论点,如下所示:
def vector_function(x, y , func):
vfunc = np.vectorize(func)
return vfunc(x,y)
这是你的做法:
vector_function = np.vectorize(scalar_function)
现在我的问题是你为什么要那样做。我敢打赌,如果您使用 numpy 函数而不是对其进行矢量化,事情会 运行 更快。
您只需要在 return
中将参数传递给 vfunc
def vector_function(x, y , func):
vfunc = np.vectorize(func)
return vfunc(x,y)
使用这个
def vector_function(x, y):
"""
Make sure vector_function can deal with vector input x,y
"""
vector_function = np.vectorize(scalar_function)
return vector_function(x,y)
这是我写的代码
def scalar_function(x, y):
"""
Returns the f(x,y) defined in the problem statement.
"""
if x<=y:
return (np.dot(x,y))
else:
return(x/y)
def vector_function(x, y):
"""
Make sure vector_function can deal with vector input x,y
"""
vfunc = np.vectorize(scalar_function(x,y))
return vfunc
我正在尝试做 as::scalar_function 只能处理标量输入,我们可以使用函数 np.vectorize() 将其转换为向量化函数。注意 np.vectorize() 的输入参数应该是一个标量函数,而 np.vectorize() 的输出是一个可以处理向量输入的新函数。
但是在 运行 之后我得到了一个错误
TypeError: unsupported operand type(s) for -: 'float' and 'vectorize'
现在不知道怎么办
NumPy as np
已经导入 谢谢
您可以为 vector_function 添加额外的论点,如下所示:
def vector_function(x, y , func):
vfunc = np.vectorize(func)
return vfunc(x,y)
这是你的做法:
vector_function = np.vectorize(scalar_function)
现在我的问题是你为什么要那样做。我敢打赌,如果您使用 numpy 函数而不是对其进行矢量化,事情会 运行 更快。
您只需要在 return
中将参数传递给 vfuncdef vector_function(x, y , func):
vfunc = np.vectorize(func)
return vfunc(x,y)
使用这个
def vector_function(x, y):
"""
Make sure vector_function can deal with vector input x,y
"""
vector_function = np.vectorize(scalar_function)
return vector_function(x,y)