You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何根据列值筛选Numpy数组的行?

Numpy按列值匹配指定列表筛选行

针对你需要筛选Numpy数组中某列值属于预定义列表的行的需求,可以用Numpy内置的np.isin()函数高效实现,以下是具体步骤:

示例代码

import numpy as np

# 原始数组
myArray = np.array([[1,55,4],
                    [2,2,3],
                    [3,90,2],
                    [4,65,1]])
# 目标值列表
desiredValues = [2,3,4]

# 1. 生成布尔掩码:判断第一列的每个元素是否在目标列表中
mask = np.isin(myArray[:, 0], desiredValues)
# 2. 用掩码筛选符合条件的行
desiredArray = myArray[mask]

print(desiredArray)

执行后输出结果:

[[ 2  2  3]
 [ 3 90  2]
 [ 4 65  1]]

关键说明

  • myArray[:, 0]:提取数组的第一列(索引从0开始,若要筛选其他列,修改索引即可)。
  • np.isin():生成与第一列长度一致的布尔数组,元素为True表示对应位置的列值在目标列表中。
  • 布尔掩码索引:直接用布尔数组作为Numpy数组的索引,会自动保留所有True对应的行。

备选方法(适合小数据量)

如果数组规模很小,也可以用Python列表推导式实现,但效率远低于np.isin()的向量化操作:

desiredArray = myArray[[row[0] in desiredValues for row in myArray]]

内容的提问来源于stack exchange,提问作者Paulo Nascimento

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 09:30:24