[問題] 請教有無比較好的寫法

看板Python作者時間6年前 (2018/12/07 12:35), 6年前編輯推噓3(304)
留言7則, 2人參與, 6年前最新討論串1/1
我現在有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

12/07 12:48, 6年前 , 1F
不知道有沒有誤會 取最小長度應該都一樣吧? 可以assig
12/07 12:48, 1F

12/07 12:48, 6年前 , 2F
n給另一個變數 不用多算兩次
12/07 12:48, 2F

12/07 12:48, 6年前 , 3F
另外既然長度都一樣就不用取平均了吧?
12/07 12:48, 3F

12/07 12:49, 6年前 , 4F
應該只要一層迴圈就可以 for搭配zip很好用
12/07 12:49, 4F
誤會了QQ 那個平均是將三組數列相加作平均 因為長度不一定一樣所以才先弄成一樣長 這樣每一個位置才會有對應到的數才能進行計算 之所以會好幾層是因為一層迴圈讀daya1 2 3 接著再一層讀x y z 然後再用動態變數去管理 整個寫起來非常亂QQ

12/07 13:13, 6年前 , 5F
你長度是要全部都一樣還是每一組自己一樣?
12/07 13:13, 5F

12/07 13:14, 6年前 , 6F
如果變數只用再讀檔的話你用os.walk()去檔名就好了
12/07 13:14, 6F
長度是自己一樣 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

12/07 14:03, 6年前 , 7F
兩層而已不算深啦
12/07 14:03, 7F
文章代碼(AID): #1S2VXvz7 (Python)
文章代碼(AID): #1S2VXvz7 (Python)