用python对不同文件中的数百行列求和
我有几十个文件(a、b、c等),每个文件的格式如下: 文件a------文件b------文件c------以此类推用python对不同文件中的数百行列求和,python,file,numpy,Python,File,Numpy,我有几十个文件(a、b、c等),每个文件的格式如下: 文件a------文件b------文件c------以此类推 x1a y1a | x1b y1b | x1c y1c | x2a y2a | x2b y2b | x2c y2c | x3a y3a | x3b y3b | x3c y3c | . . . 请记住,每个文件中有数百行和两列。 我只想对每个文件的第二列逐行求和,即 Y1=y1a+y1b+y1c+ Y2=y2a+y2b+y2c+ Y3=y3a+y3b+y3c+ . . .
x1a y1a | x1b y1b | x1c y1c |
x2a y2a | x2b y2b | x2c y2c |
x3a y3a | x3b y3b | x3c y3c |
.
.
.
请记住,每个文件中有数百行和两列。 我只想对每个文件的第二列逐行求和,即 Y1=y1a+y1b+y1c+
Y2=y2a+y2b+y2c+
Y3=y3a+y3b+y3c+
.
.
.
然后,创建一个新的两列文件,内容为: x1a Y1
x2a Y2
x3a Y3
.
.
.
有人能帮忙吗
谢谢大家! 使用
loadtxt
和一些巧妙的切片,这是非常可能的
从您的示例中,似乎希望文件的第一列是a
,第二列是所有y
行的总和。以下是我使用的示例文件:
file_a.txt file_b.txt file_c.txt
1 2 4 3 1 2
3 4 2 1 6 7
5 6 6 7 9 1
7 8 5 2 2 3
首先,让我们先将文件读入数组,然后水平堆叠:
filenames = [f'file_{i}.txt' for i in ('a', 'b', 'c')]
arr = np.column_stack([np.loadtxt(f) for f in filenames])
现在我们的索引。我们可以从索引1
开始,每隔一列获取一次,从而访问所有y
列:
arr[:, 1::2]
因此,现在我们可以沿着第一个轴对该数组求和,再次使用column\u stack
将其与第一个x
列组合,最后写入一个文件:
out = np.column_stack([arr[:, 0], arr[:, 1::2].sum(1)])
np.savetxt('out.txt', out, fmt='%d')
下面是out.txt
:
1 7
3 12
5 14
7 13
因此,您不关心x1b等问题。欢迎使用堆栈溢出。我建议你把它分成小块。首先,您需要打开一个文件并从中读取输入。太好了,@user3483203!它解决了我的问题。我利用这个机会了解了loadtxt和conlumn_堆栈,这我并不知道。非常感谢。
out = np.column_stack([arr[:, 0], arr[:, 1::2].sum(1)])
np.savetxt('out.txt', out, fmt='%d')
1 7
3 12
5 14
7 13