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

Numpy全0数组执行np.where(a[a>=0])返回空数组是什么原因?

问题根因
  • 你对np.where的单参数调用逻辑理解有误:仅传入一个数组作为参数时,np.where会返回该数组内非0、布尔值为True的元素的位置索引。你代码中先执行了a[a>=0]运算,原数组所有元素都是0且满足a>=0的条件,因此切片结果为array([0,0,0,0]),所有元素都被判定为布尔False,最终返回空索引数组。
  • 你的写法本身不符合需求:你要获取原数组中值匹配0的索引,直接对原数组做切片a[a>=0]会丢失原数组的索引对应关系,就算切片后数组内有非0值,返回的也是切片后新数组的索引,而非原数组的索引。
正确实现

如果你的需求是获取原数组中所有值为0的索引,直接传入值判断的布尔数组即可:

import numpy as np
a = np.array([0,0,0,0])
res = np.where(a == 0)
print(res)
# 输出:(array([0, 1, 2, 3], dtype=int64),)

如果需要叠加a>=0的前置过滤条件,组合布尔条件即可:

res = np.where((a >= 0) & (a == 0))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 07:36:07