比如我要檢查就像兩個表之間的相關係數:從列表中計算排除元素的簡單方法?
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]' –