比如我要检查就像两个表之间的相关系数:从列表中计算排除元素的简单方法?
r = np.corrcoef(list25, list26)[0,1]
,但我想排除-1在从计算列表。是否有一个简单的单线程方式来做这件事,而不是制作一个新的列表副本并迭代删除所有-1等等?
比如我要检查就像两个表之间的相关系数:从列表中计算排除元素的简单方法?
r = np.corrcoef(list25, list26)[0,1]
,但我想排除-1在从计算列表。是否有一个简单的单线程方式来做这件事,而不是制作一个新的列表副本并迭代删除所有-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]
使用发电机
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
从列表:
while -1 in list25: list25.remove(-1)
要过滤列表? 'filter(lambda x:x!= -1,values)' – mhoff
或列表理解:'[x for x in mylist if x!= -1]' –