Python 使用numpy方法计算自定义核矩阵

Python 使用numpy方法计算自定义核矩阵,python,numpy,numpy-ndarray,array-broadcasting,numpy-einsum,Python,Numpy,Numpy Ndarray,Array Broadcasting,Numpy Einsum,我有一个形状为d X N的数据(每列都是特征向量) 我有以下用于计算内核矩阵的代码: def kernel(x1, x2): return x1.T @ x2 data = np.array([[1,2,3], [1,2,3], [1,2,3]]) result = [] for i in range(data.shape[1]): current_result = [] for j in range(data.shape[1]): x1 = data[:, i]

我有一个形状为d X N的数据(每列都是特征向量) 我有以下用于计算内核矩阵的代码:

def kernel(x1, x2):
  return x1.T @ x2

data = np.array([[1,2,3], [1,2,3], [1,2,3]])
result = []
for i in range(data.shape[1]):
  current_result = []
  for j in range(data.shape[1]):
    x1 = data[:, i]
    x2 = data[:, j]
    current_result.append(kernel(x1, x2))
  result.append(current_result)

np.array(result)
几周前我问了这个问题:

我得到了这个答案:

 np.einsum('ji,jk->ik', a, a, optimize=True)
这是一个很好的答案,问题是它只适用于这个特定的内核。现在我需要使用一个不同的内核函数。 有没有办法只使用numpy函数来计算这些值?

你说的“它只适用于这个特定的内核”是什么意思?你能确切地描述一下为什么/在哪些情况下?