Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 按数组numpy过滤_Python_Numpy_Scipy - Fatal编程技术网

Python 按数组numpy过滤

Python 按数组numpy过滤,python,numpy,scipy,Python,Numpy,Scipy,我正在尝试用我收集的另一个数组(具有相同的值)筛选我的数据数组 我的主要路线看起来像 [['Name' 'Col1' 'Count'] ['test' '' '413'] ['erd' ' ' '60'] ..., ['Td1' 'f' '904'] ['Td2' 'K' '953'] ['Td3' 'r' '111']] 我还有一张名单,上面有各种匹配的名字 names = ['Td1','test','erd'] 我想做什么 我想使用列表名作为对上述数据集的筛选 我尝试过的

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

我的主要路线看起来像

[['Name' 'Col1' 'Count']
 ['test' '' '413']
 ['erd' ' ' '60']
 ..., 
 ['Td1' 'f' '904']
 ['Td2' 'K' '953']
 ['Td3' 'r' '111']]
我还有一张名单,上面有各种匹配的名字

names = ['Td1','test','erd']
我想做什么

我想使用列表名作为对上述数据集的筛选

我尝试过的

name_filter = main_ndarray[:,0] == names
这行不通

我所期望的

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

您也可以使用
过滤器
功能

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)
给出:

[array(['test', '', '413'],
       dtype='|S5'), array(['erd', ' ', '60'],
       dtype='|S5'), array(['Td1', 'f', '904'],
       dtype='|S5')]

您也可以使用
过滤器
功能

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)
给出:

[array(['test', '', '413'],
       dtype='|S5'), array(['erd', ' ', '60'],
       dtype='|S5'), array(['Td1', 'f', '904'],
       dtype='|S5')]

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

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)]
结果:

>>> df
   Name Col1 Count
0  test        413
1   erd         60
2   Td1    f   904
3   Td2    K   953
4   Td3    r   111
>>> result
   Name Col1 Count
0  test        413
1   erd         60
2   Td1    f   904
>>>
参考资料


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

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)]
结果:

>>> df
   Name Col1 Count
0  test        413
1   erd         60
2   Td1    f   904
3   Td2    K   953
4   Td3    r   111
>>> result
   Name Col1 Count
0  test        413
1   erd         60
2   Td1    f   904
>>>
参考资料


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

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]) 
这将为您提供所需的输出:

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

我也会使用@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]) 
这将为您提供所需的输出:

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

那么出于好奇,我现在该怎么处理这个数组呢?它没有保留“常规”格式。它现在有了这个数据类型,索引1中的值与连续的数据类型完全分离array@cat您可以使用
map(lambda:list(a)、filter(names中的lambda x:x[0],cats_数组))
来保持类似列表的格式。如果您这样做,您的答案将是
[['test'、''413']、['erd'、''60']、['Td1'、'f'、'904']
,那么出于好奇,我现在该如何处理该数组呢?它没有保留“常规”格式。它现在有了这个数据类型,索引1中的值与连续的数据类型完全分离array@cat您可以使用
map(lambda:list(a)、filter(names中的lambda x:x[0],cats_数组))
来保持类似列表的格式。如果您这样做,您的答案将是
[['test'、''413']、['erd'、''60']、['Td1'、'f'、'904']