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

如何提取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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:09:56