Python 板


LINE

接着帮回 也说明一下我的想法 不管怎样 直接贴code给大家看我还是觉得不是很好 不是有没有诚意 是这样看code真的很容易误看 没有色码 缩排又痛苦… 我先贴的原po的code ( 参考https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1460282360.A.ADC.htmlhttps://ideone.com/3wBqbL 虽然不行run完 但至少好读 怕以後连结不见的话,ptt贴code可以放最後,有需要再去看 然後缩8格...有点逼我吉娃娃…看开点 个人建议4格就好 ※ 引述《TuCH (谬客)》之铭言: : 先稍微整理一下 : ※ 引述《MAGICXX (逢甲阿法)》之铭言: : : 大家好 : : 1. : : 我现在有一组程式码有问题 : : upperb=NDVI_LST[col[0]]>0.0 : : lowerb=NDVI_LST[col[0]]<0.1 : : edge_1=NDVI_LST[(upperb & lowerb)] : col_0 = col[0] : col_1 = col[1] 的确, col 0 跟 1 如果常用到 写成变数是好事 一来维护简洁 二来执行有可能加速 三来字数可能变少 : upperb=NDVI_LST[col_0]>0.0 : lowerb=NDVI_LST[col_0]<0.1 : edge_1=NDVI_LST[(upperb & lowerb)] : : lst_values=[] : : for i in edge_1[col[0]]: : : LST=NDVI_LST.loc[NDVI_LST[col[0]]==i,col[1]] : : NDVI=i # 这行不知道在干嘛 的确 整个code没用到 建议删除 通用会这样写只有可能为了可读性或延用到别人function的变数名调整而已 : : for j in LST.values: : : lst_values.append(j) 这段理解後似乎也没有必要 你开了一个空list 然後把pd的LST转np的array 再一个一个值塞回去… 你可以简单的tolist() (如果你需要python的list的话) 或是list_values = LST.values (怕不小心改到值的话用copy) : : df.loc[0.0,'w1月']=max(lst_values) 最後只找max的话 pandas也有max可以用(还会帮忙去掉nan值) 上面提到塞list的动作也可以省略 : # 这段看不懂在干嘛 : max_lst_values = edge_1[col_1].max() : min_lst_values = edge_1[col_1].min() : : lst_values=[] : : for i in edge_1[col[0]]: : : LST=NDVI_LST.loc[NDVI_LST[col[0]]==i,col[1]] : : NDVI=i : : for j in LST.values: : : lst_values.append(j) : : df.loc[0.0,'d1月']=min(lst_values) : : 因为我现在会需要有12个月的重复计算以及 : : upperb以及lowerb的重复计算(0.0 ,0.1, 0.2, 0.3.....1.0) 需要回圈跑的东西通通for loop就可以了 12个月、upperb、lowerb什麽的 没有什麽是不能for loop的 下面的整段code我研究了一下 给你一些建议: 1. for i in range(10) a. i已经是整数 int(i)显得多余 b. 整段code的i for loop 只对NDVI_bound取index得到值 何不直接for loop NDVI_bound[:-1] 反正i+1也只是+0.1 2. 你的 lst_values=[] 应该是放错位置了 从append方式很奇怪之外,这个变数也没有被用到(for i j loop) for k loop有用到 但内圈 i j loop一直洗掉 lst_values 想必有问题 个人通灵建议lst_values=[]至少提升至for k loop下 : : 原本我是用下面的code跑 可是每次都会剩下最後一个值然後把前面的值盖掉 : : NDVI_bound=np.around(np.linspace(0,1,11).tolist(),decimals=2) : : for k in range(1,13): : : for j in range(23): : : for i in range(10): : : upperb=NDVI_LST[col[int(j)]]>NDVI_bound[int(i)] : : lowerb=NDVI_LST[col[int(j)]]<NDVI_bound[int(i)+1] : : edge_1=NDVI_LST[(upperb & lowerb)] : : lst_values=[] : : for l in edge_1[col[int(j)]]: : : LST=NDVI_LST.loc[NDVI_LST[col[int(j)]]==l,col[int(j)+1]] : : NDVI=i : : for m in LST.values: : : lst_values.append(m) : : if lst_values==[]: : : df.loc[NDVI_bound[int(i)+1],'w'+str(k)+'月']=0 : : df.loc[NDVI_bound[int(i)+1],'d'+str(k)+'月']=0 : : else: : : df.loc[NDVI_bound[int(i)+1],'w'+str(k)+'月']=max(lst_values) : : df.loc[NDVI_bound[int(i)+1],'d'+str(k)+'月']=min(lst_values) : : 我想问一下大家 这样要怎麽缩减这个程式码才会是对的? 你是说 indent 吧? 缩排 如上通灵 放至for k loop 里 : : 不然我光是用一个一个贴 就要2000多行程式码 可是明明是重复做一样的动作... 用几行算钱的话 这样也不错啊... 不过感觉这不是主要问题 你forloop没事 存值逻辑要调整而已 如果上面通灵有误 那你必需开更多的栏位来储存结果 : 这边完全没有对K做操作 请检查一下code跟逻辑 原po的k是用来帮df塞月份的值的 应该是lst_values=[]写在for loop i造成的误会 : : 2.查表 : : 我找的值是从上面那张表出来的 : : D1 W1 : : 0.1 23.7 22.4 : : 0.2 25.8 26.88 : : 0.3 29.8 30.64 : : . : : . : : . : : 1.0 35.26 38.31 : : 我现在给他一个值 他要怎麽找到在这张表的哪个范围? : : 比如说 我现在给他27.33这个数值 他要怎麽找到是在0.2~0.3之间 : : 然後跟我说上限是29.8 下限是25.8 这样? : : 有两个问题 再麻烦各位了QQ : binary search 给个方向 找27.33 >= D1的最後一个true对应到的就是下限25.8 找27.33 < D1的第一个true对应到的就是上限29.8 配合index可以找到0.2~0.3之类的东西 建议写成function比较不影响程式整体的逻辑思考 p.s. 真的不外包给我吗 省时省力 --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 122.116.120.190 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1619066109.A.046.html
1F:推 MAGICXX: 肛温蛤~ 04/22 16:09







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:e-shopping站内搜寻

TOP