1

我有两个 2xN 值矩阵,我想使用“directed_hausdorff(u,v)”函数找到它们的 hausdorff 距离。但是,由于两个矩阵中的列数不相等,我想找到使用列数较少的矩阵的 hausdorff 距离。例如,如果我有

t = [(1,2,3,9), (4,5,6,7)] 
l = [(3,4,5), (7,8,9)]

l有 3 列,t有 4 列。因为tl我想修改的要大t,所以它的大小相同,l所以我可以计算相同大小的矩阵之间的 hausdorff 距离,基本上变成

t = [(1,2,3), (4,5,6)]
l = (3,4,5), (7,8,9)]

我想将此应用于任何两个 2xN(不同大小)的矩阵,在其中我确定哪个矩阵具有更多列,然后通过消除从最后一列开始的元素来修改较大的矩阵,使其等于较小矩阵的大小。是否有一种快捷方法可以自己输出两个列表?

4

1 回答 1

0

我不知道现有的函数,但如果是 Numpy 数组tl那么你可以用相当短的代码来完成这个,而不需要复制内存中的数据。

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

...

t = np.array(t)
l = np.array(l)
num_cols = min(t.shape[1], l.shape[1])
distance = directed_hausdorff(t[:, :num_cols], l[:, :num_cols])

该表达式t.shape[1]表示数组沿维度(或“轴”)1 的大小,即列数(而行数为t.shape[0])。索引语法t[:, :num_cols]意味着对于每一行(“ :”),获取第一num_cols列(“ :num_columns”)。逗号分隔每个维度的索引范围。

于 2020-06-02T00:10:42.547 回答