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

如何计算向量x1与x2间3×3规格的Pairwise distance matrix

3×3规格Pairwise距离矩阵计算方案

已知输入

  • 向量1:x1 = [1, 2, 3]
  • 向量2:x2 = [2, 3, 4]
  • 输出要求:3×3尺寸的成对距离矩阵

这里先明确容易踩的坑:如果直接把x1、x2各当作一个3维特征的单样本计算成对距离,输出只会是1×1的矩阵。要得到3×3的结果,必须把两个向量里的每个元素拆成独立的1维样本,计算两组样本所有配对的距离。

计算规则

默认采用最常用的欧氏距离,矩阵第i行第j列的取值为x1第i个元素和x2第j个元素的差的绝对值:
dist[i][j] = abs(x1[i] - x2[j])

手动代入数值计算的结果:

  • 第一行(对应x1元素1):和x2的2、3、4分别作差取绝对值,得到[1, 2, 3]
  • 第二行(对应x1元素2):和x2的2、3、4分别作差取绝对值,得到[0, 1, 2]
  • 第三行(对应x1元素3):和x2的2、3、4分别作差取绝对值,得到[1, 0, 1]

最终矩阵如下:

[[1, 2, 3],
 [0, 1, 2],
 [1, 0, 1]]

代码实现

方法1:调用scipy现成接口

import numpy as np
from scipy.spatial.distance import cdist

# 把向量转成n_samples×n_features的格式,每个元素是单独的1维样本
x1_arr = np.array([1,2,3]).reshape(-1, 1)
x2_arr = np.array([2,3,4]).reshape(-1, 1)
dist_matrix = cdist(x1_arr, x2_arr, metric='euclidean')

方法2:用numpy广播原生实现

不需要额外依赖距离计算库,直接靠numpy的广播机制就能算:

import numpy as np

x1 = np.array([1,2,3])
x2 = np.array([2,3,4])
# 把x1转成列向量,广播机制会自动计算所有两两组合的差值
dist_matrix = np.abs(x1.reshape(-1, 1) - x2)

两种方法运行后得到的结果和手动计算完全一致,都是要求的3×3规格。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 03:27:30