我有一个包含两个布尔数组的数据集。
第一个布尔数组指示哪些数据点附加了错误,并用于指定是否在MCMC例程中打开错误。第二个数组指示每个数据点是否具有测量长度。
如何通过Boolean_error
数组索引Has_length
数组,以便我有一个包含Has_length == True
Boolean_error == True
或{{1}的对象的列表}}?
以下是我尝试做的一个例子:
Boolean_error == False
答案 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