我有一个4x3的布尔类型numpy数组,我想返回一个相同大小的数组,其中除了原始数组每行的第一个True值所在位置外,其余都为False。因此,如果我有一个起始数组:
all_bools = np.array([[False, True, True],[True, True, True],[False, False, True],[False,False,False]])
all_bools
array([[False, True, True], # First true value = index 1
[ True, True, True], # First true value = index 0
[False, False, True], # First true value = index 2
[False, False, False]]) # No True Values
then I'd like to return
[[False, True, False],
[True, False, False],
[False, False, True],
[False, False, False]]
因此,第一行、第二行和第三行的索引1、0和2已经被设置为True,除此之外没有其他值。基本上,原始方法中任何True值(除了每行的第一个True值)都被设置为False。
我一直在使用np.where和np.argmax进行尝试,但还没有找到一个好的解决方案 - 非常感谢任何帮助。需要运行多次,所以我想避免迭代。