gpt4 book ai didi

python - 我想制作一个 python 脚本,用以前的值减去最新值并将结果保存在新文本文件的新列中

转载 作者:太空宇宙 更新时间:2023-11-03 11:01:50 26 4
gpt4 key购买 nike

我在文本文件中有一列从 1 到 19999 的一些数据点,我想用以前的值减去每个新值并将答案保存在新文本文件的新列中。

我的数据点(在一列中)在文本文件中带有索引号,如下所示:

1 66.295962
2 66.318076
3 66.479436
4 66.460284
5 66.551778
6 66.303606
7 66.222943
8 66.50905
9 66.268011
10 66.291807
. .
. .
. .
. .
19993 69.303592
19994 69.384204
19995 69.375126
19996 69.417533
19997 69.296388
19998 69.284336
19999 69.403861

如何在 python 中为此编写程序,非常感谢任何帮助。提前致谢,我已经尝试将我的列转换为列表,但我无法弄清楚如何减去值并保存答案在新文本文件的新列中....

我的程序是这样的:

f = open ('infilename', 'r')
for line in f:
line = line.strip()
columns = line.split()
# for i in xrange(len(columns)):
print columns[1]

import csv

#open file
infile = open('infilename', 'r')

#define csv reader object, assuming delimiter is tab
tsvfile = csv.reader(infile, delimiter='\t')

lines = []

## iterate through lines in file
for line in tsvfile:
lines.append(line)

print "Col1",[line[0] for line in lines]

最佳答案

作为菜鸟,我可能会建议使用 Python 和 NumPy 来处理和处理表格形式的数据。大多数安装都带有 NumPy(或 Pandas),因此它是工具包中的一个有值(value)的工具。请原谅格式,我不习惯这个网站

这是文件示例(我无法格式化,所以它在不同的行上):

1 66.295962   
2 66.318076
3 66.479436
4 66.460284
5 66.551778
6 66.303606
7 66.222943
8 66.50905
9 66.268011
10 66.291807

做一些导入,

>>> import numpy as np
>>> import numpy.lib.recfunctions as rfn

将文本文件加载为具有设置数据类型 (dtype) 的数组。

>>> f = np.loadtxt("f:/test/test.txt",dtype=[('ID','int32'),('Value','float64')])
>>> f
array([(1, 66.295962), (2, 66.318076), (3, 66.479436), (4, 66.460284),
(5, 66.551778), (6, 66.303606), (7, 66.222943), (8, 66.50905),
(9, 66.268011), (10, 66.291807)],
dtype=[('ID', '<i4'), ('Value', '<f8')])

创建由一个条目移位/滚动的第二列数据,以方便减法

>>> a = f['Value']
>>> a1 = np.roll(a,-1)
>>> diff = a1-a

通过合并原始数组和差异来创建输出文本文件数组(用一些冗长的文字描述如何)

>>> out = rfn.merge_arrays((f, diff), asrecarray=True, flatten=True)

最后创建输出表并保存为文本文件试图保留一些格式的外观。

>>> np.savetxt("f:/test/out.txt", out, delimiter="",fmt='% 10i % 10.6f % 10.6f')

结果如下(你可以放标题等等)

     1  66.295962   0.022114
2 66.318076 0.161360
3 66.479436 -0.019152
4 66.460284 0.091494
5 66.551778 -0.248172
6 66.303606 -0.080663
7 66.222943 0.286107
8 66.509050 -0.241039
9 66.268011 0.023796
10 66.291807 0.004155

注意...第 3 列中的最后一个条目是第 2 列中最后一个值和第一个值之间的差值。差异所在与原始值之间的配对取决于您是向前滚动还是向后滚动。在给出的示例中,我向后滚动,因此第一个差异是第 2 列中的第一个值和第二个值之间的差异。可以根据您的目的进行调整,最终/第一个值可以设置为 0,具体取决于您是否向前滚动或向后。

关于python - 我想制作一个 python 脚本,用以前的值减去最新值并将结果保存在新文本文件的新列中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31006995/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com