如何判断列表元素是否匹配矩阵单元格且严格遵守空格匹配规则
实现方法
你的匹配规则本质是要求两个条件同时满足:
- 单元格内容按空格分割后,存在和list2中元素完全一致的分词
- 单元格内容本身不能和list2中的元素完全相等(比如纯
'hi'不满足要求)
完整代码实现
import numpy as np # 输入数据 list2 = ['hi', 'ma', 'ja'] matrix2 = np.array([['high','h ight','hi ght','h i g ht'], ['man','ma n','ma th','mat h'], ['ja cket','j a ck et','jack et','ja m'], ['ma nkind','jack',' hi ','hi']]) # 定义匹配规则函数 def match_cell(cell, keywords): # 排除完全等于关键词的情况 if cell in keywords: return False # 按空格拆分后判断是否有关键词 return any(kw in cell.split() for kw in keywords) # 向量化函数适配numpy矩阵操作 vec_match = np.vectorize(lambda x: match_cell(x, list2)) # 生成结果 output = vec_match(matrix2) print(output)
输出结果
运行上述代码会得到你期望的输出:
[[False False True False] [False True True False] [ True False False True] [ True False True False]]
代码说明
- 用
split()方法按空格拆分单元格内容,自动忽略前后空格、连续空格的影响,刚好匹配你的分词判断需求 - 用
np.vectorize包装自定义判断函数,实现numpy矩阵的批量处理,不用手动遍历每个元素 - 如果不需要保留numpy格式,也可以直接用嵌套列表推导实现:
output = [[match_cell(cell, list2) for cell in row] for row in matrix2]
内容的提问来源于stack exchange,提问作者exocytosis
相关产品推荐
相关产品推荐

