Python函数适用于标量,但不适用于向量,请给我一个错误";只有大小为1的数组才能转换为Python标量;
我是python新手,对matlab有一些背景知识。 我试图为高斯核编写一个均值为0的函数。 这是我的密码:Python函数适用于标量,但不适用于向量,请给我一个错误";只有大小为1的数组才能转换为Python标量;,python,arrays,numpy,math,Python,Arrays,Numpy,Math,我是python新手,对matlab有一些背景知识。 我试图为高斯核编写一个均值为0的函数。 这是我的密码: import numpy as np import math def GaussainKernel(x,sigma): xx = np.array(x) return 1/(np.sqrt(2*math.pi*sigma**2))*math.exp(-(xx*xx)/(2*sigma**2)) 如果传递sigma和x的标量,则此操作有效,例如: GaussainKer
import numpy as np
import math
def GaussainKernel(x,sigma):
xx = np.array(x)
return 1/(np.sqrt(2*math.pi*sigma**2))*math.exp(-(xx*xx)/(2*sigma**2))
如果传递sigma和x的标量,则此操作有效,例如:
GaussainKernel(1, 1)
给我答案:
0.24197072451914337
现在如果我想传递x的向量,比如:
x = np.array([0,1,2])
GaussainKernel(x, 1)
我得到以下错误:
TypeError: only size-1 arrays can be converted to Python scalars
这是由于术语x*x
或x**2
非常感谢您的帮助。
math.exp
是一个Python函数,不接受向量作为输入。用np.exp
替换它,一切都将按预期工作
此外,您可能希望将
math.pi
替换为np.pi
,以摆脱一个导入。math.exp
是一个Python函数,不接受向量作为输入。用np.exp
替换它,一切都将按预期工作
此外,您可能希望将math.pi
替换为np.pi
,以摆脱一个导入