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

如何用NumPy针对矩阵中每个向量计算元素间距离矩阵?

解决矩阵中每个向量的元素间两两距离上三角矩阵计算问题

没问题,我来帮你搞定这个需求!你要的是对输入矩阵里的每个行向量,都生成一个和一维向量时结构一样的上三角距离矩阵,最后得到一个三维数组对吧?

用NumPy的广播机制就能轻松实现,步骤如下:

  1. 先利用广播对每个行向量计算元素间的两两差值:把原矩阵分别扩展维度为(n, 1, d)和(n, d, 1),做减法后会得到(n, d, d)的三维数组,其中每个(d,d)的子矩阵对应原矩阵中一个行向量的元素两两差。
  2. 用np.triu()对上一步的结果取上三角部分,就能保留你想要的非零元素只在对角线及以上的结构。

直接上代码示例:

import numpy as np

# 你的输入矩阵
X = np.array([[1, 2, 3], [1, 5, 7],[7, 8, 9]])

# 计算三维的上三角距离矩阵
dist_3d = np.triu(X[:, None, :] - X[:, :, None])

# 查看结果
print("第一个向量对应的上三角矩阵:")
print(dist_3d[0])
print("\n第二个向量对应的上三角矩阵:")
print(dist_3d[1])
print("\n第三个向量对应的上三角矩阵:")
print(dist_3d[2])

运行后输出的结果就是:

第一个向量对应的上三角矩阵:
[[0 1 2]
 [0 0 1]
 [0 0 0]]

第二个向量对应的上三角矩阵:
[[0 4 6]
 [0 0 2]
 [0 0 0]]

第三个向量对应的上三角矩阵:
[[0 1 2]
 [0 0 1]
 [0 0 0]]

完全符合你要的三维输出,每个切片对应原矩阵中一个向量的元素间两两距离上三角矩阵。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 17:17:33