如何重塑 Python 中的文本文件以便 rows/columns 交换位置?

How to reshape a text file in Python so that the rows/columns swap position?

编辑 - 已解决

我有一个包含 100 行数据的文本文件,每行有 500 列值。我需要简单地交换这些,以便我的文件包含 500 行数据和 100 列值。

第一列 [:,0] 中的所有内容都将成为第 1 行,第二列 [:,1] 中的所有内容将成为第 2 行 - 依此类推直到文件末尾。

我搜索了解决方案并偶然发现了 np.reshape,但我一直没能找到可用于现有文本文件的示例。我应该提一下,我也不太擅长 Python 自己解决这个问题。


或者,这是我最初用于创建此文本文件的代码 - 如果只在此处修复某些内容会更简单,这将首先重塑它,那么我愿意征求建议。

diffs = []
for number in range (1,101):
    filea = pl.loadtxt('file' + str(number) + 'a')
    fileb = pl.loadtxt('file' + str(number) + 'b')
    diff = fileb[:,1] - filea[:,1]
    diffs.append(diff)
    np.savetxt('diffs.txt', (diffs))

在这里,我有 100 个 a 个文件和 100 个 b 个文件。它们每个包含 500 行和 2 列。我在第二列中找到每个值之间的差异,并希望将它们全部保存在一个文件中,该文件维护 500 行,但有 100 列,差异为 1b-1a 2b-2a 等至 100b-100a.

希望我已经以一种可以理解的方式解释了自己。在此先感谢您的帮助。


解决方案:

reshape = np.loadtxt('diffs.txt')
diffs2 = np.transpose(reshape)
np.savetxt('diffs2.txt', (diffs2))

np.transposenumpy中常用的行列切换工具。它也可以处理更大的尺寸。请注意,当数组为 1d 时它不会改变任何内容。

如果需要更通用的解决方案(并且数据存储在文件中而不是 Python 内存中),我最近编写了一个命令行 utility that may be useful. Compiled binaries may become available soon, for now a Nim 需要编译器来构建它。我写这个是为了学习一些 Nim,它可能不是最佳性能。