如何在NumPy字符串数组中不区分大小写查找子串的所有出现位置
在NumPy字符串数组中不区分大小写查找子串的所有位置
可以通过NumPy的向量化字符串方法结合大小写统一转换来实现需求,具体操作如下:
- 导入库并定义目标数组与子串:
import numpy as np myArray = np.array(['Time', 'utc_sec', 'UTC_day', 'Utc_Hour']) sub = 'utc'
- 生成不区分大小写的匹配掩码:
将数组所有元素和子串统一转为小写,再检查每个元素是否包含目标子串,得到布尔类型的匹配结果:
mask = np.char.lower(myArray).str.contains(sub.lower())
- 提取匹配元素的索引:
用np.where()筛选出掩码中True对应的位置索引,转为列表后就是最终结果:
result = np.where(mask)[0].tolist() print(result) # 输出: [1, 2, 3]
原理说明
np.char.lower()是NumPy的向量化方法,能批量转换数组内字符串的大小写,无需手动循环遍历。.str.contains()是NumPy字符串数组的内置方法,结合大小写统一操作,实现不区分大小写的子串匹配。np.where()用于定位掩码中符合条件的位置,最终转为列表得到所需索引集合。
内容的提问来源于stack exchange,提问作者eljamba
相关产品推荐
相关产品推荐

