You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python向量化高效计算成对Dirac delta核矩阵?

高效实现Dirac Delta核的0-1矩阵(Numpy向量化方案)

完全可以用Numpy的向量化操作高效实现这个需求,性能远超Python循环遍历的方式。

实现代码

import numpy as np

def delta_kernel(X, Y):
    """
    X : ndarray of shape (n_samples_x, n_features_x)
    Y : ndarray of shape (n_samples_y, n_features_y)
    Returns
    kernel_arr : ndarray of shape (n_samples_x, n_samples_y)
    """
    # 验证特征维度一致性
    if X.shape[1] != Y.shape[1]:
        raise ValueError("X和Y的特征维度必须相同")
    
    # 利用广播机制实现逐样本对的全特征比较
    # 扩展维度后,X变为(n_samples_x, 1, n_features),Y变为(1, n_samples_y, n_features)
    # 逐元素比较后,沿特征轴判断所有元素是否相等
    matches = (X[:, np.newaxis, :] == Y[np.newaxis, :, :]).all(axis=2)
    
    # 转换为int类型的0-1矩阵
    return matches.astype(int)

核心原理

  • 广播机制:通过np.newaxis给X和Y增加维度,让它们在样本维度上自动完成成对运算,避免显式循环。
  • 向量化比较:==操作由Numpy底层C实现,逐元素比较的效率远高于Python原生循环。
  • 全特征匹配判断:all(axis=2)沿特征维度判断该样本对的所有特征是否完全相等,直接得到布尔型匹配矩阵,最后转成int类型得到0-1结果。

测试示例

X = np.array([[1,2], [3,4], [5,6]])
Y = np.array([[3,4], [1,2], [7,8]])
print(delta_kernel(X, Y))

输出结果:

[[0 1 0]
 [1 0 0]
 [0 0 0]]

内容的提问来源于stack exchange,提问作者ajl123

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 22:00:03