python - 选择行,使特定列包含列表中的值

标签 python arrays numpy

我想从 numpy 数组中获取在一列中具有特定值的行。下面的例子展示了我的方法。当我给出特定值时,我能够获得行,但是当我将多个值作为 ('4', '8') 时,我没有收到预期的行。

import numpy as np

arr = np.array([[1,2,3,4], [5,6,7,8], [9,10,11,12]])
arr2 = arr[arr[:,3] == 4]
arr3 = arr[arr[:,3] in ('4', '8')]

arr 是 array([[ 1, 2, 3, 4],[ 5, 6, 7, 8], [ 9, 10, 11, 12]])

arr2 是array([[1, 2, 3, 4]])

arr3 是array([1, 2, 3, 4])

我应该使用什么命令来获取输出 数组([[1, 2, 3, 4], [ 5, 6, 7, 8]]) ?

最佳答案

使用np.in1d为我们正在搜索的元素的任何出现创建掩码,然后只需使用 boolean indexing从输入数组中选择有效行 -

arr[np.in1d(arr[:,3], [4,8])]

sample 运行-

In [149]: arr
Out[149]: 
array([[ 1,  2,  3,  4],
       [ 5,  6,  7,  8],
       [ 9, 10, 11, 12]])

In [150]: np.in1d(arr[:,3], [4,8]) # Mask of valid ones
Out[150]: array([ True,  True, False], dtype=bool)

In [151]: arr[np.in1d(arr[:,3], [4,8])] # Select rows off arr
Out[151]: 
array([[1, 2, 3, 4],
       [5, 6, 7, 8]])

关于python - 选择行,使特定列包含列表中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41040956/

相关文章:

arrays - 函数调用相同参数自己的参数(数组)Swift

arrays - 如何在本地数组 swift 3 中保存来自 Alamofire 的 response.result.value

python - 将 matplotlib imshow 裁剪到值的范围

python - 为什么矢量化的 numpy 方法在 python ssh 子进程中只使用一个核心

python - 通过python的Postgresql ssl连接

python - 我不确定 win32gui.EnumWindows 是否正常工作

python - 广播矩阵向量点积

javascript - Django 无法在设置中导入 ckeditor 但可以在 shell 中导入?

python - 带有 numpy 数组的 numpy 日志

python - 尽管显式返回一维数组,但使用 scipy Optimize 进行 2 次迭代后出现 ValueError