Python:上下对齐 bool numpy 数组的索引

标签 python numpy

如何上下对齐 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/

相关文章:

python - 替换列表/数据框中的项目的更好方法

python - 在python中绘制 float 和整数的直方图

python - 使用线性插值调整 numpy ndarray 的大小

python - 使用正则表达式有效地将一列中的部分值替换为 pandas 中另一列中的值?

python - 防止主 while 循环在等待其他线程完成时阻塞 : python

python - 安装django后更改python版本

python - 在 Raspberry Pi 4 上使用 Chromedriver 运行 Selenium 的问题

python - 线性规划(Simplex LP)PuLP?

python - 使用 Xarray 和 Numpy 数组进行多处理

python - 通过对列数据的按位操作(位掩码)过滤结构化数组