[問題] mathematica的排序與篩選

看板Mathematica作者 (forcing to A cup)時間13年前 (2011/12/14 13:33), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/2 (看更多)
問題:mathematica有篩選與排序的語法嗎? 假設 我有一串列資料ANS[m,n] m列 n行 每一列的行表示不同屬性 現在我需要比較這些屬性依序篩選 然後排列大小 我們假設 人 國 英 數 ANS[5,4] = [王小明 99 60 31] [李大同 75 51 66] [陳小偉 71 20 43] [高小茜 81 80 79] [馬英文 78 56 26] 若我要篩選出所有數學大於30分且國文60以上的同學,mathematica有辦法直接篩選嗎? 查了資料似乎沒有篩選的語法...我只能先令一個FinalANS存放篩選結果 步驟一,先計算出FinalANS的長度 templength=0; For[i=1,i=Length[ANS],i++, If[ANS[[i,2]]>60&&ANS[[i,4]]>30,templength++,{}] ] 上面可以將templength計算出FinalANS所需的長度 步驟二,將篩選後結果放入FinalANS中,如 FinalANS=Array[fnlans,{templength,4}]; tempwrite=0; For[i=1,i=Length[ANS],i++, If[ANS[[i,2]]>60&&ANS[[i,4]]>30,tempwrite++; FinalANS[[i]]=ANS[[tempwrite]],{}] ] 這樣就可以完成篩選的答案(步驟一二應該可以合併在同一個loop裡面,一時想不出) 不過 像這樣的例子 mathematica沒辦法直接用簡單的過濾方式求得嗎? 最後是排序FinalANS 若我要依照英文成績由高排至低 那麼 我又得寫類似上面的迴圈一個一個去判斷...可以用Sort等等方式慢慢擠出來 試問 mathematica有相關排序的語法嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.134.252.177 ※ 編輯: harry901 來自: 220.134.252.177 (12/14 13:38)
文章代碼(AID): #1Ew3Kd50 (Mathematica)
文章代碼(AID): #1Ew3Kd50 (Mathematica)