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

作者: st40182 (天羽)   2018-12-07 12:35:01
我現在有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
目前是有用迴圈與動態變數寫出來
但是弄了好幾層
覺得過個幾天就會忘了我在寫啥
想請問有沒有比較好的寫法
作者: TitanEric (泰坦)   2018-12-07 12:48:00
不知道有沒有誤會 取最小長度應該都一樣吧? 可以assign給另一個變數 不用多算兩次另外既然長度都一樣就不用取平均了吧?應該只要一層迴圈就可以 for搭配zip很好用
作者: germun (ger)   2018-12-07 13:13:00
你長度是要全部都一樣還是每一組自己一樣?如果變數只用再讀檔的話你用os.walk()去檔名就好了兩層而已不算深啦

Links booklink

Contact Us: admin [ a t ] ucptt.com