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

如何使用NumPy where获取元素而非索引?Python技术问询

使用NumPy的where函数获取元素而非索引的方法

嗨,我来帮你搞定这个问题~你现在的需求是用NumPy的where拿到符合条件的元素,而不是默认返回的索引对吧?其实两种简单方法就能实现,和你写的循环结果完全一致:

方法1:直接用布尔索引(最简洁)

NumPy数组支持用布尔数组做索引,直接把你的条件套进去就能筛选出目标元素,不用绕弯子:

import numpy as np

# 生成模拟数据
test = np.ones((10,10))
for i in range(0,10):
    for j in range(0,10):
        test[i,j] = i*2.0 + j

# 直接筛选test第5列中8到18之间的元素
filtered = test[:,5][(test[:,5] >= 8.0) & (test[:,5] <= 18.0)]
print(filtered)

方法2:用where拿到索引后提取元素

如果一定要用where函数,那可以先获取符合条件的索引,再用索引去原数组中取元素:

# 先拿到满足条件的行索引
indices = np.where((test[:,5] >= 8.0) & (test[:,5] <= 18.0))
# 通过索引提取对应元素
filtered = test[:,5][indices]
print(filtered)

验证结果

运行上面的代码,输出和你写的循环结果完全一样:

[ 8. 10. 12. 14. 16. 18.]

简单说,where本身返回的是满足条件的位置索引,所以只要把这个索引作用在你要筛选的数组切片上,就能拿到对应的元素啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:26:13