如何从numpy数组中提取子集

时间:2013-09-25 08:14:16

标签: python numpy subset

让我们将以下列表列为yr = [[90], [91, 92, 93, 94, 95]],将以下单个元素列表命名为nm = ['abc', 'abd', 'fgm']以下是一些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的list元素,并提取相应的子集。例如,获取第二列的所有行,其中第二列等于'abs',第一列等于[90,91,92,93,94,95]中的任何一行。我怎么能重复这样做,也就是说,对于表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]]
[]
[]

1 个答案:

答案 0 :(得分:0)

我不明白空行,因为你应该得到18个元素(6个来自yr * 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]
[[]]
[[]]
[[]]
[[]]
[[]]