2016-07-22 68 views
0

比如我要檢查就像兩個表之間的相關係數:從列表中計算排除元素的簡單方法?

r = np.corrcoef(list25, list26)[0,1] 

,但我想排除-1在從計算列表。是否有一個簡單的單線程方式來做這件事,而不是製作一個新的列表副本並迭代刪除所有-1等等?

+0

要過濾列表? 'filter(lambda x:x!= -1,values)' – mhoff

+0

或列表理解:'[x for x in mylist if x!= -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] 
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) 
相關問題