【发布时间】:2016-10-24 17:55:12
【问题描述】:
我需要根据布尔数组(其中布尔数组是一维数组)中的条件对 xyz 坐标数组进行切片。
如果我的布尔数组是
[1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1]
我需要它对其进行切片以生成以下索引数组:
[0, 1, 2, 3, 6, 7, 10, 11, 12](真索引之间的[:-2])
最终所需的输出将是这些索引处的 xyz 坐标数组:
[xyz[0], xyz[1], xyz[2] xyz[3], xyz[6] xyz[7], xyz[10] xyz[11], xyz[12]]
另外两个切片(具有相似的期望输出)如下:
[1, 2, 3, 4, 7, 8, 11, 12, 13](真索引之间的[1:-1])
[2, 3, 4, 5, 8, 9, 12, 13, 14](真索引之间的[2:])
有没有一种没有列表理解的pythonic方法?
谢谢!
【问题讨论】:
-
这个“切片”的结果应该是什么,例如
[0, 1, 2, 3, 6, 7, 10, 11, 12] ([:-2] between True indices)的预期输出是什么? -
索引是输出(我认为)。最终目标是隔离这些索引处感兴趣的 xyz 坐标。为了清楚起见,我将编辑问题
-
为什么没有列表理解?这可能是最pythonic的方式
-
我正在尝试对大部分代码进行矢量化处理,因此我尝试尽可能避免列表推导并尽可能依赖映射。一些列表推导是不可避免的,我只是想知道在这种情况下是否有更好的方法。
标签: python arrays numpy boolean-logic object-slicing