【发布时间】:2022-01-21 01:22:59
【问题描述】:
我有一个由 7 列和超过 43000 行组成的列表,表示来自 LIDAR 测量的点云的 x、y、z、R、G、B 强度。我想按颜色过滤云,手动隔离一部分。我想消除所有不具有 RGB 组合等于过滤器中存在的那些之一的行。 例如:
Data=[[4,8,12,179,118,74,I1], [5,10,45,142,186,98,I2], [7,14,21,185,193,112,I3], [8,16,24,115,140,43,I3]]
我在第 4、5 和 6 列 (RGB) 上有一个过滤器,如下所示:
Filter=[[179,118,74],[185,193,112]]
作为输出,我想获得一个新列表,其中仅包含满足先决条件的项目(在这种情况下,它们将是第一行和第三行)。 我想要一个这样的新列表:
newlist=[[4,8,12,179,118,74,I1], [7,14,21,185,193,112,I3]]
我没有使用 Python 的经验,所以我不知道从哪里开始。
【问题讨论】:
-
您能否在代码中显示您想要的输出以及您的尝试?
-
输入在整个过程中会保持不变吗?还是会在整个程序的运行时间内发生变化? (例如,列表将在某个时间点少 1 个元素或多一个元素)
-
什么是I1、I2 ...?字符串,变量?请包括minimal reproducible example 并说明您是否需要
numpy(如您的标题和标签建议)或list解决方案。 -
输入是一个 txt 文件,有 7 列和 43000 行,在过滤器中是 3 列和 800 行。一旦初始化,它们直到过滤的那一刻才被使用,当我想消除颜色不在过滤器中的所有行时。就解决方案而言,我更喜欢使用 numpy 但带有列表的也可以。
-
如果 Data 是
np.array,则使用numpy:Data[np.isin(Data[:,3:6], Filter).all(1)]
标签: python arrays numpy filter mask