2016-07-22 11 views
0

は、例えば私のような二つのリストの間の相関係数をチェックしたい:リストの計算から要素を除外する簡単な方法は?

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

が、私は計算からリストに-1年代を除外したいです。リストの新しいコピーを作成し、すべての-1などを取り除くために反復するのではなく、これを行う簡単な一行の方法がありますか?

+0

あなたがリストをフィルタリングしたいですか? 'filter(lambda x:x!= -1、values)' – mhoff

+0

またはリストの理解度: '[xはmylistならx!= -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] 
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] 
を0

余分なメモリは必要ありません。

1

あなたが実際にリストから-1を削除する場合:

while -1 in list25: list25.remove(-1) 
関連する問題