numpy 如何在Python中快速计算向量距离

ehxuflar  于 2023-11-18  发布在  Python
关注(0)|答案(1)|浏览(96)

我想尽快计算点之间的向量。我的输入数组有一个3D的点列表。看起来像这样

b = [[0,0,1],  #first point
     [1,0,2],  #second point
     ...    ]

字符串
我想计算一个以向量为元素的矩阵(m_ij = B_i - B_j),它应该是这样的:

m = [[[0,0,0], [-1,0,-1],...],
     [[1,0,1], [0,0,0],...],
          ...             ]


我如何使用numpy和scipy的内置函数来计算这个值,而不使用任何慢循环?我找到了pdist,但它使用了一个度量,我认为它不适合我的需要。

kx5bkwkv

kx5bkwkv1#

使用broadcasting

m = b[:,None]-b[None]

字符串
输出量:

array([[[ 0,  0,  0],
        [-1,  0, -1]],

       [[ 1,  0,  1],
        [ 0,  0,  0]]])


b[:,None].shape
(2, 1, 3)

b[None].shape
(1, 2, 3)

m.shape
(2, 2, 3)

相关问题