例如,我想检查两个列表之间的相关系数,如:
r = np.corrcoef(list25, list26)[0,1]
但我想从计算中排除列表中的-1。是否有一种简单的单行方式,而不是制作列表的新副本并迭代以删除所有-1等等?
答案 0 :(得分:1)
有一种单线解决方案。它正在创建一个没有这些列表的新列表。可以使用List Comprehension:
完成new_list = [x for x in old_list if x != -1]
它基本上将符合条件的所有内容从旧列表复制到新列表。
所以,举个例子:
r = np.corrcoef([x for x in list25 if x != -1], [x for x in list26 if x != -1])[0,1]
答案 1 :(得分:1)
使用发电机
def greater_neg_1(items):
for item in items:
if item>-1:
yield item
用法:
>>> L = [1,-1,2,3,4,-1,4]
>>> list(greater_neg_1(L))
[1, 2, 3, 4, 4]
或:
r = np.corrcoef(greater_neg_1(list25), greater_neg_1(list26))[0,1]
不需要任何额外的记忆。
答案 2 :(得分:1)
如果您确实要从列表中删除-1
:
while -1 in list25: list25.remove(-1)