作者st40182 ()
看板Python
标题[问题] 请教有无比较好的写法
时间Fri Dec 7 12:35:01 2018
我现在有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://webptt.com/cn.aspx?n=bbs/Python/M.1544157305.A.F47.html
1F:推 TitanEric: 不知道有没有误会 取最小长度应该都一样吧? 可以assig 12/07 12:48
2F:→ TitanEric: n给另一个变数 不用多算两次 12/07 12:48
3F:→ TitanEric: 另外既然长度都一样就不用取平均了吧? 12/07 12:48
4F:→ TitanEric: 应该只要一层回圈就可以 for搭配zip很好用 12/07 12:49
误会了QQ
那个平均是将三组数列相加作平均
因为长度不一定一样所以才先弄成一样长
这样每一个位置才会有对应到的数才能进行计算
之所以会好几层是因为一层回圈读daya1 2 3
接着再一层读x y z
然後再用动态变数去管理
整个写起来非常乱QQ
5F:推 germun: 你长度是要全部都一样还是每一组自己一样? 12/07 13:13
6F:→ 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
7F:推 germun: 两层而已不算深啦 12/07 14:03