Python 矢量化内核代码
有没有办法以矢量化的形式实现以下内容Python 矢量化内核代码,python,numpy,Python,Numpy,有没有办法以矢量化的形式实现以下内容 def kfunc(x,y): return #some number def compute_K(X, kfunc): m, n = X.shape kernel = np.zeros((m, m)) for i, row in enumerate(X): for j, ele in enumerate(row): for k, ele_2 in enumerate(row):
def kfunc(x,y):
return #some number
def compute_K(X, kfunc):
m, n = X.shape
kernel = np.zeros((m, m))
for i, row in enumerate(X):
for j, ele in enumerate(row):
for k, ele_2 in enumerate(row):
kernel[j, k] = kfunc(ele, ele_2)
return kernel
基本上,上面采用了一个numpy矩阵和一些函数,并在矩阵X上计算核矩阵kfunc的内容是确定这种函数是否可以矢量化以及如何矢量化的关键。它看起来像是为每一行覆盖
kernel
,这意味着可以执行i=len(X)-1
和row=X[-1]
并消除外环!您正在丢弃大部分i
值的事实是可疑的。除此之外,我将着重于重写kfunc
,这样它可以使用2个数组(row
),而不是2个标量。kfunc的内容是确定这样一个函数是否可以矢量化以及如何矢量化的关键。它看起来像是为每一行覆盖内核,这意味着可以执行I=len(X)-1
和row=X[-1]
并消除外环!您正在丢弃大部分i
值的事实是可疑的。除此之外,我将重点重写kfunc
,这样它就可以使用2个数组(row
),而不是2个标量。