繁体   English   中英

Python:上下对齐布尔型numpy数组的索引

[英]Python: up and down justify the index of a bool numpy array

我如何向上和向下证明一个numpy布尔数组。 称谓是指取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)

看起来您想将第一个数组移到后面以执行您所谓的“向上对齐”。 我认为重新排列numpy数组中的元素有点困难,因此我通常转换为标准python列表,重新排列元素,然后转换回numpy数组。

def up_justify(np_array):
    list_array = list(np_array)
    first_list = list_array.pop(0) #removes first list
    list_array.append(first_list) #adds list to back
    return np.array(list_array)

同样,您可以通过删除最后一个列表并将其放在最前面来进行调整,如下所示

def down_justify(np_array):
    list_array = list(np_array)
    last_element = list_array.pop()
    return np.array([last_element] + list_array)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM