Skip to main content
 首页 » 编程设计

python-3.x之如何计算numpy中的所有向量差对

2025年12月25日43cmt

我知道我可以做np.subtract.outer(x, x)。如果x的形状为(n,),那么我最终得到一个形状为(n, n)的数组。但是,我有一个形状为x(n, 3)。我想输出形状为(n, n, 3)的东西。我该怎么做呢?也许np.einsum

请您参考如下方法:

您可以在使用 broadcasting 扩展尺寸以形成None的3D数组版本并从中减去原始2D数组版本之后使用 np.newaxis / x ,如下所示-

x[:, np.newaxis, :] - x 

sample 运行-
In [6]: x 
Out[6]:  
array([[6, 5, 3], 
       [4, 3, 5], 
       [0, 6, 7], 
       [8, 4, 1]]) 
 
In [7]: x[:,None,:] - x 
Out[7]:  
array([[[ 0,  0,  0], 
        [ 2,  2, -2], 
        [ 6, -1, -4], 
        [-2,  1,  2]], 
 
       [[-2, -2,  2], 
        [ 0,  0,  0], 
        [ 4, -3, -2], 
        [-4, -1,  4]], 
 
       [[-6,  1,  4], 
        [-4,  3,  2], 
        [ 0,  0,  0], 
        [-8,  2,  6]], 
 
       [[ 2, -1, -2], 
        [ 4,  1, -4], 
        [ 8, -2, -6], 
        [ 0,  0,  0]]])