使用Python中的另一个布尔数组为布尔数组建立索引

时间:2016-03-31 20:21:43

标签: python arrays indexing boolean

我有一个包含两个布尔数组的数据集。

第一个布尔数组指示哪些数据点附加了错误,并用于指定是否在MCMC例程中打开错误。第二个数组指示每个数据点是否具有测量长度。

如何通过Boolean_error数组索引Has_length数组,以便我有一个包含Has_length == True Boolean_error == True或{{1}的对象的列表}}?

以下是我尝试做的一个例子:

Boolean_error == False

2 个答案:

答案 0 :(得分:2)

你走了。这正是你所需要的。

errors_with_length = [b for b, l in zip(Boolean_error, Has_length) if l]

zip()函数每次从每个迭代中获取1个值,列表推导过滤掉错误Has_length,并将Boolean_error用于True

另一种更有效的方法是使用itertools.compress(),如下所示:

>>> list(itertools.compress(Boolean_error, Has_length))
[False, True, False, True, False, True, False, False, False, False]

答案 1 :(得分:0)

你可以写一个函数来做到这一点。

def return_list_with_only_known_length(error, length):
    output = []
    for i, b in enumerate(length):
        if b:
            output.append(error[i])
    return output