【发布时间】:2015-03-29 23:41:58
【问题描述】:
您有一个非常大的矩阵保存在 csv 文件中。您想转置它并将其保存到另一个文件中。您不能一次将所有数据加载到内存中。你是怎么做到的?
我认为我们可以从文件中读取一行并将其转换为一列并将该列写入文件。读取行并将其转置到列对我来说是可以的,但我不知道如何逐列写入文件。任何人都可以实现?
【问题讨论】:
-
一种选择是按列读取原始文件,但这可能需要一段时间,具体取决于 csv 的大小,因为您必须读取每一行 x 次,其中 x 是数字它有的列。我确信有更好的解决方案,有人可能会很好地透露。
-
还是把它加载到内存中。操作系统在管理虚拟内存方面将比您想出的任何试图保持在物理 RAM 限制内的方案做得更好。
-
目标语言是什么?这里有 python 和 C++。这是一个更普遍的问题吗?你对性能感兴趣吗?例如,转置一个非常大的矩阵会导致 很多 缓存未命中和较长的执行时间。
-
@deeiip 面试官?这是堆栈溢出,而不是代码高尔夫......如果我们谈论的是人为的谜题,这是错误的网站。这是“专业人士如何解决这个问题”网站,而不是“帮助我找到工作并为我完成工作”网站。
-
@J...面试题在这个网站上很常见,不信可以去搜一下。
标签: python c++ file file-io transpose