Numpy如何按多列条件筛选a=1、b=2且c=3、d=4的数组行
Numpy 多条件按列筛选数组行的实现方法
你可以通过多条件布尔索引实现需求,两种常用写法如下:
写法1:直接布尔索引(更简洁,无需调用np.where)
# 各列对应索引:a列=0,b列=1,c列=2,d列=3 # 多条件用&连接,每个判断条件必须加小括号避免运算符优先级错误 filtered_rows = a[(a[:,0] == 1) & (a[:,1] == 2) & (a[:,2] == 3) & (a[:,3] == 4)] print(filtered_rows)
写法2:搭配np.where的版本
xx2 = a[np.where((a[:,0] == 1) & (a[:,1] == 2) & (a[:,2] == 3) & (a[:,3] == 4))] print(xx2)
以上两种写法的输出结果一致,符合要求的行如下:
[[ 1. 2. 3. 4. 1. 9.935] [ 1. 2. 3. 4. 0.9 9.403] [ 1. 2. 3. 4. 0.8 8.785]]
注意事项
- Numpy多条件组合时,逻辑与不能使用Python原生的
and关键字,必须使用按位与运算符&;如果需要逻辑或使用|,逻辑非使用~ - 每个独立的判断条件必须用小括号包裹,否则会因为运算符优先级问题触发报错
内容的提问来源于stack exchange,提问作者user17138990
相关产品推荐
相关产品推荐

