2013-09-25 66 views
0

讓我們命名名單以下列表爲yr = [[90], [91, 92, 93, 94, 95]]和單元素nm = ['abc', 'abd', 'fgm']以下列表這裏是一個numpy的陣列形式的一些數據,堪稱如何從numpy的陣列中提取一個子集

d = [ [95, 'abd', 'S', 432235], 
     [94, 'abd', 'S', 432231], 
     [91, 'abc', 'S', 343433], 
     [92, 'abc', 'S', 342433], 
     [94, 'abc', 'S', 344433], 
     [90, 'abc', 'Z', 343234] ] 

我想要做的是遍歷nm的每個單元素以及yr的列表元素,並提取相應的子集。例如,獲取第二列的所有行,其等於'abs',第一列等於[90,91,92,93,94,95]中的任何一列。我怎麼可以重複這樣做,也就是說,對於nm nm和yr的每個列表元素的每個單個元素?

編輯:

這是我所期望的輸出退貨:

[[90, 'abc', 'Z', 343234]] 
[[91, 'abc', 'S', 343433], [92, 'abc', 'S', 342433], [94, 'abc', 'S', 344433]] 
[] 
[[95, 'abd', 'S', 432235], [94, 'abd', 'S', 432231]] 
[] 
[] 

回答

0

我不明白的空行,因爲你應該得到的18個元素(從6年* 3從nm)。

然後:

yr = [[90], [91, 92, 93, 94, 95]] 
nm = ['abc', 'abd', 'fgm'] 
d = [[95, 'abd', 'S', 432235], 
     [90, 'abc', 'S', 343433], 
     [90, 'abc', 'Z', 343234]] 


yr = [y for y in yr]  
for y in yr: 
    for n in nm: 
     for dd in d: 
      print dd if dd[0] in y and dd[1] in n else '[[]]' 

給出:

[[]] 
[90, 'abc', 'S', 343433] 
[90, 'abc', 'Z', 343234] 
[[]] 
[[]] 
[[]] 
[[]] 
[[]] 
[[]] 
[[]] 
[[]] 
[[]] 
[95, 'abd', 'S', 432235] 
[[]] 
[[]] 
[[]] 
[[]] 
[[]] 
+0

它應該返回3個輸出,因爲我們有以nm 3層的元件,並且年1個元件。 – user2295350

+0

但是abd是nm中唯一的一個,否則請指定您的輸出更好。 –

+0

好的你是對的。但仍然,我不喜歡解析數組d的方式。我已經更新了這個問題。請看一看。供參考:我也更新了一些輸入。 – user2295350