2024-10-03 13:26:27 发布
网友
例如,我想检查两个列表之间的相关系数,如:
r = np.corrcoef(list25, list26)[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]
不需要额外的内存
如果确实要从列表中删除-1:
-1
while -1 in list25: list25.remove(-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
:有一个线性解决方案。它正在创建一个新的列表,而不是那些。可以使用List Comprehension:
它基本上将所有符合条件的内容从旧列表复制到新列表
所以,举个例子:
相关问题 更多 >
编程相关推荐