繁体   English   中英

Numpy - 使用另一个数组的行从一个数组中删除行

[英]Numpy - removing rows from one array using rows of another one

我有两个数组,其中包含大型数据集 - 点云。 第一个数组由三列以上构建,其中前三列是 XYZ 坐标,其余列包含附加信息。 一行基本上是一个具有给定坐标和附加参数的点——在这个阶段并不重要。

第二个数组只包含三个 - XYZ - 列。

从第一个数组中,我想删除 XYZ 坐标在给定缓冲区内与第二个数组中的任何行(点)重叠的所有行(点)。

例如这里是第一个数组:

15.0 23.0 35.5 222 211 254
13.0 33.0 34.5 223 232 244
15.0 23.0 35.5 226 211 253
15.4 22.1 32.5 122 231 252
14.1 24.4 36.5 242 212 251
15.0 23.4 55.5 223 211 253
15.0 23.5 45.5 222 211 254

这是第二个:

15.0 23.1 35.6
13.1 33.1 34.4
15.5 23.1 35.8
15.4 22.1 32.9
14.1 24.8 36.5
15.5 23.4 55.9
15.9 23.5 45.5

我给定的缓冲区是 0.1。 因此,我想获得以下数组:

15.0 23.0 35.5 226 211 253
15.4 22.1 32.5 122 231 252
14.1 24.4 36.5 242 212 251
15.0 23.4 55.5 223 211 253
15.0 23.5 45.5 222 211 254

使用 numpy 实现此任务的最佳方法是什么?

那个怎么样?

def filter(arr1, arr2, threshold):
  return arr1[np.linalg.norm(arr1[:,:3] - arr2, axis=1) < threshold]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM