如何上下对齐 numpy bool 数组。通过对齐,我的意思是获取 True 值,并移动它们,使它们要么是顶部的第一个值(如果它们向上对齐),要么是底部的第一个值。 (如果它们向下合理)
[[False True True True True True]
[False False True True False True]
[False True False True False False
[True True True True False True]]
因此,如果我向下调整上面显示的 bool 数组的 True 值,它看起来会像:
[[False False False True False False]
[False True True True False True]
[False True True True False True]
[True True True True True True]]
最佳答案
简单地沿着每一列对其进行排序,这会下推 True 值,同时将 False 值向上调整版本。对于向上对齐的版本,请翻转已排序的版本。
运行示例来展示实现情况 -
In [216]: mask
Out[216]:
array([[False, True, True, True, True, True],
[False, False, True, True, False, True],
[False, True, False, True, False, False],
[ True, True, True, True, False, True]], dtype=bool)
In [217]: np.sort(mask,0) # Down justified
Out[217]:
array([[False, False, False, True, False, False],
[False, True, True, True, False, True],
[False, True, True, True, False, True],
[ True, True, True, True, True, True]], dtype=bool)
In [218]: np.sort(mask,0)[::-1] # Up justified
Out[218]:
array([[ True, True, True, True, True, True],
[False, True, True, True, False, True],
[False, True, True, True, False, True],
[False, False, False, True, False, False]], dtype=bool)
关于Python:上下对齐 bool numpy 数组的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44295465/