使用numpy的内核表达式

使用numpy的内核表达式,numpy,Numpy,我有一个拉普拉斯内核,写为k(x1,x2)=exp(-0.5 | | x1-x2 | | |) 我写的是 k = np.exp( - 0.5 * np.sqrt ( np.dot (x1,x1) + np.dot (x2,x2) - 2 * np.dot(x1,x2))) k = np.exp (-0.5 * (np.dot(x1,x1) + np.dot(x2,x2)- 2 * np.dot(x1,x2))) 这是正确的吗? 另外,如果我的内核是k(x1,x2)=exp(-0.5 | |

我有一个拉普拉斯内核,写为
k(x1,x2)=exp(-0.5 | | x1-x2 | | |)
我写的是

k = np.exp( - 0.5 * np.sqrt ( np.dot (x1,x1) + np.dot (x2,x2) - 2 * np.dot(x1,x2)))
k = np.exp (-0.5 * (np.dot(x1,x1) + np.dot(x2,x2)- 2 * np.dot(x1,x2)))
这是正确的吗? 另外,如果我的内核是
k(x1,x2)=exp(-0.5 | | x1-x2 | | ^2)
,我将它写为

k = np.exp( - 0.5 * np.sqrt ( np.dot (x1,x1) + np.dot (x2,x2) - 2 * np.dot(x1,x2)))
k = np.exp (-0.5 * (np.dot(x1,x1) + np.dot(x2,x2)- 2 * np.dot(x1,x2)))

这是否正确?

您可以使用以下方法直接计算数组的范数: numpy.linalg.norm(x)

将numpy导入为np
k=np.exp(-0.5*np.linalg.norm(x1-x2))

x1和x2的维度是什么?如果它们是标量或向量,那就好了。如果它们是二阶张量(矩阵),你需要一个转置。如果他们比这更高,事情就复杂了。