如何在 Python 中重塑文本文件,以便行/列交换位置



编辑 - 已解决

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

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

我搜索了解决方案并偶然发现了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.transpose是用于切换numpy中的行和列的常规工具。 它也可以处理更大的尺寸。 请注意,当数组为 1d 时,它不会更改任何内容。

如果需要更通用的解决方案(并且数据存储在文件中而不是在Python内存中(,我最近编写了一个可能有用的命令行实用程序。编译的二进制文件可能很快就会可用,现在需要一个 Nim 编译器来构建它。我写这篇文章是为了学习一些 Nim,它可能不是最佳的性能。

最新更新