在python中基于布尔数组的切片数组



我需要根据布尔数组(其中布尔数组为1D)中的条件切片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 xyz [2] [3], xyz xyz [6] [7], xyz xyz [10] [11], xyz [12]]

其他两个切片(具有类似的期望输出)如下:

[1、2、3、4、7、8、11、12、13]([1:1]之间真正的指数)

[2、3、4、5、8、9、12、13、14]([2]之间真正的指数)

有没有一种python的方法可以在没有列表推导的情况下做到这一点?

谢谢!

看起来numpy.ndarray.nonzero就是你需要的:

a = np.asarray([1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1])
print(a.nonzero())

输出:

array([ 0,  5,  6,  9, 10, 14])

相关内容

  • 没有找到相关文章

最新更新