按数组数筛选

2024-09-26 22:42:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试用我收集的另一个数组(具有相同的值)筛选我的ndarray

我的主要任务是

[['Name' 'Col1' 'Count']
 ['test' '' '413']
 ['erd' ' ' '60']
 ..., 
 ['Td1' 'f' '904']
 ['Td2' 'K' '953']
 ['Td3' 'r' '111']]

我有另一份名单,上面有各种匹配的名字

^{pr2}$

我想做什么

我想用列表名称作为对上面的ndarray的过滤器?在

我尝试过的

name_filter = main_ndarray[:,0] == names

这不管用

我所期望的

[['Name' 'Col1' 'Count']
 ['test' '' '413']
 ['erd' ' ' '60']
 ['Td1' 'f' '904']]

Tags: nametest名称列表count数组名字col1
3条回答

您也可以使用filter函数。在

cats_array = numpy.array(
 [['Name' ,'Col1', 'Count'],
 ['test', '' ,'413'],
 ['erd' ,' ' ,'60'],
 ['Td1' ,'f' ,'904'],
 ['Td2' ,'K' ,'953'],
 ['Td3' ,'r', '111']]
 )

 names = ['Td1','test','erd']

 filter(lambda x: x[0] in names, cats_array)

给出:

^{pr2}$

我也会使用@YXD的Pandas解决方案,但为了完整起见,我还提供了一个基于列表理解的简单解决方案:

data = [['Name', 'Col1', 'Count'],
 ['test', '', '413'],
 ['erd', ' ', '60'],
 ['Td1', 'f', '904'],
 ['Td2', 'K', '953'],
 ['Td3', 'r', '111']]

names = ['Td1', 'test', 'erd']

# select all sublist of data
res = [l for l in data if l[0] in names]

# insert the first row of data
res.insert(0, data[0]) 

然后得到所需的输出:

^{pr2}$

考虑将熊猫用于此类数据:

import pandas as pd

data = [['Name', 'Col1', 'Count'],
        ['test', '', '413'],
        ['erd', ' ', '60'],
        ['Td1', 'f', '904'],
        ['Td2', 'K', '953'],
        ['Td3', 'r', '111']]

df = pd.DataFrame(data[1:], columns=data[0])
names = ['Td1','test','erd']
result = df[df.Name.isin(names)]

结果:

^{pr2}$

参考文献

相关问题 更多 >

    热门问题