编辑 - 已解决
我有一个文本文件,其中包含 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,它可能不是最佳的性能。