如何解决如何在不使用for循环的情况下仅更新二维列表中的选定值?
我有一个巨大的矩阵,大约有80000行和66000列。我需要更新每一行中的选定值。这些选定的值逐行变化。例如,我可能必须更新第一行的第346、446、789和321列值,而对于第二行,我可能必须更新第821、564、101、781列值。我希望你能解决这个问题。
在这里,我正在使用一个小的矩阵来模拟问题。 假设我有一个二维列表/矩阵。
matrix = [ [1,2,3],[4,5,6],[7,8,9]]
在实际问题中,我需要更新所有行,但是为了简单起见,在这里我只考虑1行。即第二行我希望更新第二行的第一和第二值,并将其余值保留在第二行中。 我需要不使用for循环来做。 我尝试的代码如下:
index_list = [0,1]
matrix[1] = [ matrix[1][index] + 1 for index in index_list ]
print(matrix)
在这里,index_list是需要更新的选定列的列表。我得到的输出是:
[[1,[5,9]]
我需要/期望的输出是:
[[1,6,9]]
所以,问题是,我只希望为给定的矩阵更新第二行的1sta和第二个值,并将其余值保留在第二行中。由于时间限制,需要在不使用for循环的情况下完成此操作。我正在尝试使用列表压缩,因为它相对较快。你能帮忙吗? 我忘了提到代码是在python中,如果需要,我们可以使用pandas和numpy。
解决方法
matrix[1] = [matrix[1][i] + 1 if i in index_list else matrix[1][i] for i in range(len(matrix[1]))]
此解决方案有效。
,您需要处理列表中索引为 not 的情况,并保留这些值:
matrix[1] = [ matrix[1][index] + 1 if index in index_list
else matrix[1][index] ]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。