Glorious Youth ZY 2022-03-30 17:24 采纳率: 0%
浏览 19

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

  • 写回答

2条回答 默认 最新

  • CSDN专家-HGJ 2022-03-31 14:16
    关注

    在数据文件夹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]
    ...
    

    如有帮助,请点采纳。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 3月30日

悬赏问题

  • ¥15 vika文档如何与obsidian同步
  • ¥15 华为手机相册里面的照片能够替换成自己想要的照片吗?
  • ¥15 陆空双模式无人机飞控设置
  • ¥15 sentaurus lithography
  • ¥100 求抖音ck号 或者提ck教程
  • ¥15 关于#linux#的问题:子进程1等待子进程A、B退出后退出(语言-c语言)
  • ¥20 web页面如何打开Outlook 365的全球离线通讯簿功能
  • ¥15 io.jsonwebtoken.security.Keys
  • ¥15 急,ubuntu安装后no caching mode page found等
  • ¥15 联想交换机NE2580O/NE1064TO安装SONIC