如何在NumPy数组中筛选第三列值为0或1的特定行?
筛选NumPy数组中第三列为0或1的行
嘿,这事儿用NumPy的布尔索引就能轻松解决,给你两种实用的方法:
方法一:逻辑条件组合
先明确:NumPy数组是从0开始索引的,所以你说的“第三列”对应索引2。我们可以先提取第三列,再创建布尔掩码标记符合条件的行,最后用掩码过滤数组:
import numpy as np # 你已经加载好的数组 data_np = np.loadtxt("ex2data1.txt", delimiter=',') # 提取所有行的第三列 third_column = data_np[:, 2] # 创建布尔掩码:第三列等于0 或者 等于1(注意用NumPy的|,不能用Python原生的or) mask = (third_column == 0) | (third_column == 1) # 筛选出符合条件的行 filtered_rows = data_np[mask]
方法二:用np.isin简化代码
如果觉得上面的步骤有点繁琐,np.isin可以帮你一步到位,直接检查第三列的值是否在指定的列表[0,1]中:
import numpy as np data_np = np.loadtxt("ex2data1.txt", delimiter=',') # 直接筛选第三列属于[0,1]的行 filtered_rows = data_np[np.isin(data_np[:, 2], [0, 1])]
两种方法都能得到你想要的结果,第二种代码更简洁,适合快速实现。你可以打印filtered_rows验证一下,就是所有第三列是0或1的行啦~
内容的提问来源于stack exchange,提问作者zhan
相关产品推荐
相关产品推荐

