[問題] mathematica的排序與篩選
看板Mathematica作者harry901 (forcing to A cup)時間13年前 (2011/12/14 13:33)推噓0(0推 0噓 0→)留言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)
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):
Mathematica 近期熱門文章
PTT數位生活區 即時熱門文章