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

Numpy数组条件索引查找:求类似Matlab find函数的实现方法

在NumPy中实现类似Matlab find函数的索引查找方法

嘿,我太懂你习惯了Matlab的find函数,转用NumPy时找不到对应方法的别扭感!其实NumPy里不需要专门的find函数,用内置的方法就能轻松实现你要的功能,甚至更简洁。

针对你给出的示例需求,我给你两种常用的实现方式:

方法1:使用np.where()(最接近Matlab find的用法)

np.where()可以返回满足条件的元素索引,对于一维数组,它返回的是一个包含索引数组的元组,我们取第一个元素即可拿到索引:

import numpy as np
x = np.linspace(-5,5,11)
# 获取所有x<0的元素索引
k_neg = np.where(x < 0)[0]
# 获取所有x>=0的元素索引
k_pos = np.where(x >= 0)[0]
y = np.zeros(len(x))
y[k_neg] = -1
y[k_pos] = 1

方法2:直接使用布尔索引赋值(更高效简洁)

NumPy数组支持直接用布尔条件作为索引,不需要先提取索引数组,这种方式代码更短,执行效率也更高:

import numpy as np
x = np.linspace(-5,5,11)
y = np.zeros(len(x))
# 直接给满足x<0的位置赋值-1
y[x < 0] = -1
# 直接给满足x>=0的位置赋值1
y[x >= 0] = 1

如果是多维数组的场景,np.where()同样适用,比如二维数组arr,np.where(arr > 0)会返回两个数组,分别对应满足条件元素的行索引和列索引,用法和一维类似。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:44:37