看板 Python 關於我們 聯絡資訊
1.只看了前面一點點,其他大大都有實用建言 感覺對資料的處理邏輯本身,原PO比較需要多點轉換思考 簡單或複雜往往只在一念之間 不然只把pandas用得傷人又傷已 可以這麼期許自己: 當你pandas通了,你會忘了for的存在 而如果覺得pandas辦不到你想要用for做的事,先懷疑自己的處理邏輯 2.底下是一點語法小建議 # 條件既然拆成多行了,bit運算也提出來寫,方便增刪修條件 # 運算不要在最後的[]裡,除非只有一個條件 # 欄名儘量用 . 調用,減少視覺干擾 # 變數名稱,建議 df_xxx,se_xxx,明白把類型寫出來,這是針對原PO的建議 where = True where &= NDVI_LST.col_0 > 0.0 where &= NDVI_LST.col_0 < 0.1 edge_1 = NDVI_LST[where] ※ 引述《KSJ (阿真)》之銘言: : 接著幫回 也說明一下我的想法 : 不管怎樣 直接貼code給大家看我還是覺得不是很好 : 不是有沒有誠意 是這樣看code真的很容易誤看 : 沒有色碼 縮排又痛苦… : 我先貼的原po的code : ( 參考https://www.ptt.cc/bbs/C_and_CPP/M.1460282360.A.ADC.html: https://ideone.com/3wBqbL : 雖然不行run完 但至少好讀 : 怕以後連結不見的話,ptt貼code可以放最後,有需要再去看 : 然後縮8格...有點逼我吉娃娃…看開點 : 個人建議4格就好 : ※ 引述《TuCH (謬客)》之銘言: : : 先稍微整理一下 : : 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)] : 的確 整個code沒用到 建議刪除 : 通用會這樣寫只有可能為了可讀性或延用到別人function的變數名調整而已 : 這段理解後似乎也沒有必要 : 你開了一個空list 然後把pd的LST轉np的array : 再一個一個值塞回去… : 你可以簡單的tolist() (如果你需要python的list的話) : 或是list_values = LST.values (怕不小心改到值的話用copy) : 最後只找max的話 pandas也有max可以用(還會幫忙去掉nan值) : 上面提到塞list的動作也可以省略 : : # 這段看不懂在幹嘛 : : max_lst_values = edge_1[col_1].max() : : min_lst_values = edge_1[col_1].min() : 需要回圈跑的東西通通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下 : 你是說 indent 吧? 縮排 : 如上通靈 放至for k loop 裡 : 用幾行算錢的話 這樣也不錯啊... : 不過感覺這不是主要問題 你forloop沒事 存值邏輯要調整而已 : 如果上面通靈有誤 那你必需開更多的欄位來儲存結果 : : 這邊完全沒有對K做操作 請檢查一下code跟邏輯 : 原po的k是用來幫df塞月份的值的 : 應該是lst_values=[]寫在for loop i造成的誤會 : : binary search : 給個方向 找27.33 >= D1的最後一個true對應到的就是下限25.8 : 找27.33 < D1的第一個true對應到的就是上限29.8 : 配合index可以找到0.2~0.3之類的東西 : 建議寫成function比較不影響程式整體的邏輯思考 : p.s. 真的不外包給我嗎 省時省力 -- You love playing with that. You love playing with all your stuffed animals. You love your mommy,your daddy,your nature pajamas. You love everything,don't you? Yeah, You know what,buddy? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 180.177.89.24 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1619094507.A.700.html ※ 編輯: poototo (180.177.89.24 臺灣), 04/22/2021 20:31:43