[问题] 请教有无比较好的写法

楼主: 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