如何提取NumPy结构化数组中满足指定条件的行?
在NumPy结构化数组中提取满足多条件的行?
当然可以!NumPy对结构化数组的条件筛选支持得很到位,不管是单一条件还是多条件组合都能轻松实现,咱们就用你提供的示例代码来一步步操作:
首先先确认你的结构化数组创建代码是没问题的:
import numpy as np name = ['Tom' , 'Jim', 'Alice', 'Alice', 'Greg'] height = [188, 160, 160, 157, 180] pet = ['dog', 'cat', 'fish', 'dog', 'cat'] a = np.zeros(len(name), dtype=[('name', 'U30'), ('height', 'i'), ('pet', 'U30')]) a['name'] = name a['height'] = height a['pet'] = pet
接下来要提取height等于160且pet等于'cat'的行,关键是要正确构建多条件的布尔索引:
- 每个单独的条件会生成一个布尔数组,标记哪些行符合该条件
- 多条件组合时要用
&表示逻辑与,|表示逻辑或,而且必须给每个条件加上括号(因为==的运算符优先级比&高,不加括号会导致逻辑错误)
具体代码如下:
# 构建筛选条件 condition = (a['height'] == 160) & (a['pet'] == 'cat') # 用布尔索引提取符合条件的行 filtered_rows = a[condition] # 查看结果 print(filtered_rows)
运行这段代码后,输出结果就是符合要求的行:
[('Jim', 160, 'cat')]
如果之后需要其他组合条件,比如提取height大于170或者pet等于'dog'的行,只需要把条件改成:
condition = (a['height'] > 170) | (a['pet'] == 'dog')
同样能得到正确的筛选结果。
内容的提问来源于stack exchange,提问作者Endrju
相关产品推荐
相关产品推荐

