看板 Python 關於我們 聯絡資訊
我現在有3個資料夾 分別是data1、data2、data3 然後每個資料夾裡面分別有40組資料 1組資料又包含3個小組 分別是x.npy、y.npy、z.npy 畫成示意圖大概像這樣: ╭──────╮ ╭──────╮ ╭──────╮ │資料夾 Data1│ │資料夾 Data2│ │資料夾 Data3│ ╰──────╯ ╰──────╯ ╰──────╯ x_1.npy x_1.npy x_1.npy y_1.npy y_1.npy y_1.npy z_1.npy z_1.npy z_1.npy . . . . . . . . . . . . x_40.npy x_40.npy x_40.npy y_40.npy y_40.npy y_40.npy z_40.npy z_40.npy z_40.npy 而接著每一個資料長度都不太一樣 可能len(data1 x_1.npy)=101 , len(data2 x_1.npy)=99 之類的 所以要把每個都調整成一樣長 方法是取最小的那個 變成說 data1 x_1.npy = [:min(len(data1 x_1.npy , data2 x_1.npy , data3 x_1.npy))] data2 x_1.npy = [:min(len(data1 x_1.npy , data2 x_1.npy , data3 x_1.npy))] data3 x_1.npy = [:min(len(data1 x_1.npy , data2 x_1.npy , data3 x_1.npy))] 每一筆資料都要這麼做 都變成一樣長之後 再將每一組做平均 (data1 x_1.npy + data2 x_1.npy +data3 x_1.npy) / 3 目前是有用迴圈與動態變數寫出來 但是弄了好幾層 覺得過個幾天就會忘了我在寫啥 想請問有沒有比較好的寫法 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 120.105.133.228 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1544157305.A.F47.html
TitanEric: 不知道有沒有誤會 取最小長度應該都一樣吧? 可以assig 12/07 12:48
TitanEric: n給另一個變數 不用多算兩次 12/07 12:48
TitanEric: 另外既然長度都一樣就不用取平均了吧? 12/07 12:48
TitanEric: 應該只要一層迴圈就可以 for搭配zip很好用 12/07 12:49
誤會了QQ 那個平均是將三組數列相加作平均 因為長度不一定一樣所以才先弄成一樣長 這樣每一個位置才會有對應到的數才能進行計算 之所以會好幾層是因為一層迴圈讀daya1 2 3 接著再一層讀x y z 然後再用動態變數去管理 整個寫起來非常亂QQ
germun: 你長度是要全部都一樣還是每一組自己一樣? 12/07 13:13
germun: 如果變數只用再讀檔的話你用os.walk()去檔名就好了 12/07 13:14
長度是自己一樣 x_1 取3個data中最小長度 y_1 取3個data中最小長度 z_1 取3個data中最小長度 . . . x_40 取3個data中最小長度 y_40 取3個data中最小長度 z_40 取3個data中最小長度 這樣的概念 讀檔的部分也是用g大所說的語法 for i in range (1,3,1): os.getcwd() + '\\data %s\\' %i 這樣讀資料夾 之後再寫第二層迴圈讀第1~40的x、y、z .npy ※ 編輯: st40182 (120.105.133.228), 12/07/2018 13:27:45
germun: 兩層而已不算深啦 12/07 14:03