如何检查NumPy数组列是否含特定字符串并删除对应列?
如何删除NumPy数组中包含指定字符串的列
首先提一句:你给出的目标字符串是"Banana",但原数组里对应的是"Bananas"(末尾多了个s),下面的代码我会用"Bananas"来匹配,如果你确实要找"Banana",直接调整字符串内容就行。
实现思路分两步:
- 定位目标字符串所在的列索引:用
np.where找到元素的位置,提取对应的列值; - 删除目标列:用
np.delete函数指定轴(axis=1代表操作列)和要删除的索引。
完整代码示例
import numpy as np # 初始化原数组 contacts = np.array([ ["Apples","Burger"], ["Bananas","Cake"], ["Grapes","Honey"] ]) # 找到"Bananas"所在的列索引 # np.where返回行、列两个数组,取列数组的第一个元素(因为只有一个匹配项) target_col = np.where(contacts == "Bananas")[1][0] # 删除目标列,axis=1表示对列进行操作 contacts = np.delete(contacts, target_col, axis=1) print(contacts)
运行后输出结果:
[['Burger'] ['Cake'] ['Honey']]
扩展:处理多列匹配的情况
如果数组里有多个列包含目标字符串,可以收集所有匹配的列索引,一次性删除:
# 获取所有匹配的列索引并去重 target_cols = np.unique(np.where(contacts == "Bananas")[1]) # 批量删除列 contacts = np.delete(contacts, target_cols, axis=1)
内容的提问来源于stack exchange,提问作者maxefaxe11
相关产品推荐
相关产品推荐

