【问题标题】:How do I calculate all pairs of vector differences in numpy?如何计算 numpy 中的所有矢量差异对?
【发布时间】:2015-09-09 07:39:29
【问题描述】:

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

【问题讨论】:

    标签: python-3.x numpy numpy-einsum


    【解决方案1】:

    您可以在使用None/np.newaxis 扩展维度后使用broadcasting 形成x 的3D 数组版本并从中减去原始的2D 数组版本,就像这样 -

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

    示例运行 -

    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]]])
    

    【讨论】:

    • 嗯,这比我预期的要简单得多:)
    猜你喜欢
    • 2021-11-08
    • 2018-07-04
    • 2014-08-10
    • 1970-01-01
    • 2021-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多