python - Python 函数适用于标量,但不适用于向量,并给我错误“只有 size-1 数组可以转换为 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
任何帮助将不胜感激。
解决方案
math.exp
是一个 Python 函数,不将向量作为输入。替换它,np.exp
一切都会按预期工作。
此外,您可能希望替换math.pi
为np.pi
以摆脱一个导入。
推荐阅读
- google-cloud-storage - 如何在谷歌云存储桶中按大小过滤文件
- flutter - 颤振':path_provider:compileDebugJavaWithJavac'错误
- python - 将嵌套的字符串列表转换为特定顺序的嵌套字符列表python
- c# - 如何使用 linq 在 C# 中执行递归函数
- laravel - 使用 Laravel 中扫描的 qrcode 下载生成的 pdf
- java - NetBeans 正在创建压缩文件而不是 Jar 文件
- docker - 更改 docker 和 Dockerfile 的时区
- c - 为什么“搜索”功能不运行?
- amazon-web-services - s3 存储桶中的分区数据格式
- python - Odoo 13 - 计算字段 - 未按预期工作