Python numpy 比较两个 3D 数组的相似性

Python numpy comparing two 3D Arrays for similarity

我正在尝试比较两个 3D numpy 数组以计算相似度。我找到了这两个 post,我正试图将它们拼凑成有用的东西。

长话短说,我有两个从 3D 点云创建的数组,因此它们填充了 3D 坐标,但由于 3D 对象不同,数组的长度不同。

如果需要,我可以 post 一些示例数组,但它们是 +1000 点,所以 post.

的文本会很多

这就是我现在要做的事情。您可以在此处获取 array1array2 数据:https://pastebin.com/WbNvRUwGarray2 从第 1858 行开始)。

array1 = [long np array with 3D coordinates]
array2 = [long np array with 3D coordinates]

array1_original = array1.copy()
if len(array1) < len(array2):
        array1, array2 = array2, array1
array_difference = np.subtract(array1, array2[:,None]) # The [:,None] is from the second link to make the arrays have same length to enable subtractraction
array_abs_difference = np.absolute(array_difference)
array_total_difference = np.sum(array_abs_difference)
similarity = 1 - (array_total_difference / 
np.sum(array1_original))

我的数组差异很好,代表了我想要的,所以最相似的数组差异很小,但是当我计算 array1_original 的总和时,它比我的差异小得多,因此我的相似性得分变成负值。

我也尝试计算一个用零填充的数组与 array1_original 的差异,但结果大致相同。

谁能告诉我为什么 np.sum(array1_original) 不会大于 np.sum(array_abs_difference)

numpy 比较最终变得很慢,所以我只使用 open3D 代替。对我有用