2015-10-15 121 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我需要应用一个正则表达式捕获所需的数据,是否有可能捕获我想要的数据并忽略剩下的数据已经格式化了吗? –