![](/img/trans.png)
[英]Efficient way to index a list with a numpy bool array in Python
[英]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.