【发布时间】:2021-04-04 00:41:03
【问题描述】:
我正在循环大量 H x W 矩阵。我无法将它们全部存储在内存中。我需要得到 N 个矩阵。例如,在所有已处理的矩阵矩阵的位置 (i, j) 中的所有元素中,位置 (i, j) 中的第 N 个矩阵的元素将是最大的。对于 N 矩阵中的第二个,取第二大的元素,以此类推。
示例。
令 N = 2。那么第一个矩阵将如下所示。
而第二个矩阵是这样的。
如何在循环中做这样的操作,以免把所有的矩阵都存入内存?
【问题讨论】:
-
您要对矩阵进行排序吗?
-
@Kevin,我不明白你的问题。这个问题可以通过对所有矩阵进行排序并取一个切片来解决。但问题是所有矩阵都必须存储在内存中。与排序相比,可以在循环的一次循环中找到 N = const 最大值。
-
貌似是
H x Wk-largest elements in a stream。 -
@QuangHoang,是的,你是对的。我什至可以尝试实现一个简单的算法。但是numpy可以让你方便高效的向量化操作,我想知道一个简单但有效的解决方案。
-
有
np.partition,但这也需要将所有内容都放在内存中。我不认为np对流数据有任何优势。
标签: python algorithm numpy matrix memory-efficient