2015-10-15 194 views
1

更換特定值我有一個numpy的二維數組,像這樣:在numpy的二維數組

[['a', '(junk, b)', '(junk, c)'], 
['d', '(junk, e)', '(junk, f)'], 
['g', '(junk, h)', '(junk, i)']] 

正如你可以看到一些值會帶有括號,我想去除這些多餘的值,我的新數組是:

[['a', 'b', 'c'], 
['d', 'e', 'f'], 
['g', 'h', 'i']] 

我有一個正則表達式來拿到賽I組要捕獲但有numpy的內部的清潔方式,在特定的位置,正則表達式適用於某些價值觀和返回數據的我新數組替換了不需要的值?

+0

出於所有實際目的,您都有一個嵌套的列表清單。使它成爲一個對象數組,特別是對於像這樣的操作,不會增加太多。 – hpaulj

回答

2

您可以使用嵌套列表理解與str.strip()方法移除項目:

>>> np.array([[x.strip('()') for x in i] for i in l]) 
array([['a', 'b', 'c'], 
     ['d', 'e', 'f'], 
     ['g', 'h', 'i']], 
     dtype='|S1') 

根據您的編輯,如果你有多餘的話在你的陣列可以使用正則表達式匹配單個字符 :

>>> l=[['a', '(junk, b)', '(junk, c)'], 
... ['d', '(junk, e)', '(junk, f)'], 
... ['g', '(junk, h)', '(junk, i)']] 
>>> 
>>> np.array([[re.search(r'\b[a-z]\b',x).group() for x in i] for i in l]) 
array([['a', 'b', 'c'], 
     ['d', 'e', 'f'], 
     ['g', 'h', 'i']], 
     dtype='|S1') 
>>> 
+0

這個工作,但我編輯我的文章是一個更準確的數據表示,而不是應用strip我需要應用一個正則表達式捕獲所需的數據,是否有可能捕獲我想要的數據並忽略剩下的數據已經格式化了嗎? –

相關問題