如何在numpy数组的字符串元素中按索引批量移除字符?
解决numpy字符串数组移除指定索引字符的问题
核心原因
你猜的没错,Python字符串是不可变类型,没法直接删除某个索引的字符,必须生成新的字符串来替代原字符串。下面给两种实用的解决方法:
方法一:列表推导式+字符串拼接(简单直观)
先定义要保留的索引,遍历数组里的每个字符串,拼接保留的字符后转回numpy数组:
import numpy as np # 原numpy字符串数组 arr = np.array(['100000000', '101010100', '110101010', '111111110']) # 定义要保留的索引(排除6和8) keep_indices = [0,1,2,3,4,5,7] # 处理每个字符串,生成新数组 result = np.array([''.join([s[i] for i in keep_indices]) for s in arr]) print(result) # 输出:['1000000' '1010110' '1101000' '1111110']
方法二:numpy字符数组操作(更贴合numpy风格)
把字符串数组转成二维字符数组,筛选需要的列后再合并成字符串:
import numpy as np arr = np.array(['100000000', '101010100', '110101010', '111111110']) # 将每个字符串拆成单个字符,变成二维数组 char_matrix = arr.view('U1').reshape(len(arr), -1) # 选择需要保留的列(排除第6、8列) selected_chars = char_matrix[:, [0,1,2,3,4,5,7]] # 把每行的字符合并成字符串 result = np.apply_along_axis(''.join, axis=1, arr=selected_chars) print(result) # 输出:['1000000' '1010110' '1101000' '1111110']
内容的提问来源于stack exchange,提问作者Petar Andreev
相关产品推荐
相关产品推荐

