Python 函数适用于标量,但不适用于向量

我是 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 的标量,则此方法有效,例如:


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


任何帮助将不胜感激。


白衣染霜花
浏览 92回答 1
1回答

蓝山帝景

math.exp是一个Python函数,不接受向量作为输入。替换它np.exp,一切都会按预期工作。另外,您可能需要替换math.pi为np.pi以摆脱一次导入。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python