Python 按条件重组数组问题

共有五个文件,每个文件夹中各有命名为1-10的.txt文件,每个文件中有4000个采集数据,构成了5个4000×10矩阵。

计算所有txt文件的标准差,按照相同命名.txt取“标准差最大”原则重新排列4000×10矩阵

(例如:8.txt的标准差在0-120五个文件夹中分别是1,2, 3, 4, 5,则取“120”文件夹中的8.txt。其他1-10.txt 与上相同,最终构成新的4000×10矩阵)

请教论坛Python专家,要怎么编写??感谢万分!

img

img

在数据文件夹t0根目录新建一个t0.py,使用下面代码,就可以达到任务要求:

import pandas as pd
import numpy as np
import os
#读取并处理数据
m=[]
n=[]
vl=[]
for root,dirs,fn in os.walk(r'F:\2022\py01\t0'):
    for fi in fn:
        if fi.endswith('.txt'):
            f=os.path.join(root,fi)
            d=pd.read_csv(f,header=None).astype(float)
            m.append(os.path.dirname(f).rsplit('\\')[-1])
            n.append(fi)            
            vl.append(d.values.std())
df=pd.DataFrame({'dirs':m,'filename':n,'std':vl})
m=df.groupby(['filename'])['std'].max()
df1=df[df['std'].isin(m.values)].sort_values(by='filename')
#构成需要的数据框
data=pd.DataFrame()
for d,f in zip(df1['dirs'],df1['filename']):
    with open(os.path.join(d,f),'r') as fs:
        df0=pd.read_csv(fs,header=None,names=[f])
        data=pd.concat([data,df0],axis=1,ignore_index=False)
print(data)
print(np.mat(data))

运行结果示例:

F:\2022\py01\t0>t0
  1.txt  2.txt  3.txt
0   2231   1201   1215
1   2541   1540   2541
2   3625   1478   2365
...
[[2231 1201 1215]
 [2541 1540 2541]
 [3625 1478 2365]
...

如有帮助,请点采纳。


a = [[1,2,3],[2,5,6],[9,0,1],[12, 13, 14],[23, 25, 56, 64]]
print([[a[x],a[y]] for x,y in zip( range(0, len(a), 2), range(1, len(a), 2) )])