我需要根据布尔数组(其中布尔数组为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])