Python numpy 比较两个 3D 数组的相似性
Python numpy comparing two 3D Arrays for similarity
我正在尝试比较两个 3D numpy 数组以计算相似度。我找到了这两个 post,我正试图将它们拼凑成有用的东西。
长话短说,我有两个从 3D 点云创建的数组,因此它们填充了 3D 坐标,但由于 3D 对象不同,数组的长度不同。
如果需要,我可以 post 一些示例数组,但它们是 +1000 点,所以 post.
的文本会很多
这就是我现在要做的事情。您可以在此处获取 array1
和 array2
数据:https://pastebin.com/WbNvRUwG(array2
从第 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 代替。对我有用
我正在尝试比较两个 3D numpy 数组以计算相似度。我找到了这两个 post,我正试图将它们拼凑成有用的东西。
长话短说,我有两个从 3D 点云创建的数组,因此它们填充了 3D 坐标,但由于 3D 对象不同,数组的长度不同。
如果需要,我可以 post 一些示例数组,但它们是 +1000 点,所以 post.
的文本会很多这就是我现在要做的事情。您可以在此处获取 array1
和 array2
数据:https://pastebin.com/WbNvRUwG(array2
从第 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 代替。对我有用