Python 按一维数组过滤二维数组行
我有一个数据库查询的结果作为nd数组。我想通过结果第一列中的ID列表过滤结果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
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哦,数组名称现在已修复。太好了,谢谢!我知道有这样一个函数。