如何根据索引列表将二维列表指定位置元素替换为1?
无需Pandas:将数组指定索引位置替换为1的解决方案
嘿,我来帮你搞定这个问题!你想要根据indexes里的索引列表,把example_array对应位置的元素改成1,而且不需要用Pandas对吧?其实用Python原生的循环就能轻松实现,逻辑清晰还不容易出错。
解决方案代码
首先先定义你的原始数组:
example_array = [[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0]] indexes = [[1,2,3], [2,3], [0,4,2], [1,4,3], [0,4,3], [1,2,3], [1,2]]
然后用两层循环处理:
# 遍历每一行的索引,以及该行需要设置为1的列索引列表 for row_num, col_indexes in enumerate(indexes): # 对当前行的每个目标列索引,把对应位置设为1 for col_num in col_indexes: example_array[row_num][col_num] = 1
验证结果
运行完上面的代码后,打印example_array就能得到你想要的预期结果:
print(example_array) # 输出: # [[0,1,1,1,0],[0,0,1,1,0],[1,0,1,0,1],[0,1,0,1,1],[1,0,0,1,1],[0,1,1,1,0],[0,1,1,0,0]]
为什么你之前的Pandas方法没生效?
顺便提一下,你之前的Pandas代码里有几个小问题:比如for row in matrix其实是遍历DataFrame的列名,不是行;而且x_u和x这些变量都没有定义,自然没法正确赋值。不过既然你不需要用Pandas,这个原生方法就完全够用啦。
内容的提问来源于stack exchange,提问作者user9355680
相关产品推荐
相关产品推荐

