【发布时间】:2020-12-28 13:44:09
【问题描述】:
我有一个巨大的矩阵,大约有 80000 行和 66000 列。我需要更新每一行中的选定值。这些选定的值因行而异。例如,我可能必须更新第一行的第 346、446、789 和 321 列值,而对于第二行,我可能必须更新第 821、564、101、781 列值。我希望你了解情况。
在这里,我正在使用一个小矩阵来模拟问题。 假设我有一个二维列表/矩阵。
matrix = [ [1,2,3], [4,5,6], [7,8,9]]
在实际问题中,我需要更新所有行,但为了简单起见,我只考虑 1 行。即第二行。我希望更新第 2 行的第 1 和第 2 值,并保持第 2 行中的其余值不变。 我需要在不使用 for 循环的情况下做到这一点。 我试过的代码如下:
index_list = [0,1]
matrix[1] = [ matrix[1][index] + 1 for index in index_list ]
print(matrix)
这里,index_list 是需要更新的选定列的列表。我得到的输出是:
[[1, 2, 3], [5, 6], [7, 8, 9]]
我需要/预期的输出是:
[[1, 2, 3], [5, 6, 6], [7, 8, 9]]
所以,问题是,我希望只更新上面给定矩阵的第二行的第一个和第二个值,并保持第二行中的其余值不变。由于时间限制,这需要在不使用 for 循环的情况下完成。我正在尝试使用列表压缩,因为它相对较快。你能帮忙吗? 忘了说代码是用python写的,如果需要我们可以用pandas,numpy。
【问题讨论】:
标签: python list loops matrix list-comprehension