Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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 按一维数组过滤二维数组行_Python_Arrays_Numpy_Filter_Numpy Ndarray - Fatal编程技术网

Python 按一维数组过滤二维数组行

Python 按一维数组过滤二维数组行,python,arrays,numpy,filter,numpy-ndarray,Python,Arrays,Numpy,Filter,Numpy Ndarray,我有一个数据库查询的结果作为nd数组。我想通过结果第一列中的ID列表过滤结果 Query result: Filter: Desired outcome: ID | Field ID ID | Field ---+------ --- ---+------ 0 | Asd 1 1 | Wat 1 | Wat 2 2 | Cat 2 | Cat

我有一个数据库查询的结果作为nd数组。我想通过结果第一列中的ID列表过滤结果

Query result:    Filter:     Desired outcome:
ID | Field       ID          ID | Field
---+------       ---         ---+------
0  | Asd         1           1  | Wat
1  | Wat         2           2  | Cat
2  | Cat
6  | Yep
当然,可以使用列表理解:

out = [i for i in result if i[0] in filter]
但是我正在寻找一种NumPy类型的解决方案,比如
np.where
。该方法返回NumPy数组列表,而不是
ndarray
。所以,完全无法使用

你知道这种方法吗

编辑:用于实验的沙盒 下面是复制粘贴的代码,如果您想尝试的话

a = np.array([[0, 'asd'],[1, 'wat'],[2, 'cat'],[6, 'yep']])
b = np.array([1, 2], dtype=str)

out = np.array([i for i in a if i[0] in b])
> array([['1', 'wat'], ['2', 'cat']])

你想得到这样的结果吗

>>> c = a[np.where(np.in1d(a[:, 0], b))]
>>> c
array([['1', 'wat'],
       ['2', 'cat']],
      dtype='<U11')
>>> type(c)
<class 'numpy.ndarray'>
c=a[np.where(np.inad(a[:,0],b))] >>>c 数组([['1','wat'], ['2','cat']],
dtype='在您的示例中,您忘记给出
结果
。@Kefeng91哦,数组名称现在已修复。太好了,谢谢!我知道有这样一个函数。