Re: [問題] 如何切割與分配數列

看板Mathematica作者 (養花種魚數月亮賞星星)時間12年前 (2013/01/05 07:58), 編輯推噓2(201)
留言3則, 2人參與, 最新討論串2/2 (看更多)
※ 引述《hollowowl (空鴞)》之銘言: : 想問個在大家眼中可能很簡單的問題(版上的文章好多看不懂ˊˋ : 如題 但應該不能只用Partition或Flatten做到 : 假設我一開始畫了一個30X30的數列 : A = RandomChoice[{-1, 1}, {30, 30}]; : s[i_, j_] := A[[i, j]]; : 每個都有標號s(1,1)、s(1,2)、...、s(2,1)、...、s(30,30) : 然後每個都有對應的值(1或-1) : 現在我想要把格子變大但是大小不變 也就是變成10X10 : 新的格自各自對應的質變成本來的9個值的相加 : 我不知道怎麼去重新分配我的格子 : 舉個簡單的例子像 : ┌ ┬ ┬ ┬ ┬ ┬ ┬ ┬ ┬ ┐ : 1 1 1 2 2 2 3 3 3 : ├ ┼ ┼ ┼ ┼ ┼ ┼ ┼ ┼ ┤ : 1 1 1 2 2 2 3 3 3 : ├ ┼ ┼ ┼ ┼ ┼ ┼ ┼ ┼ ┤ : 1 1 1 2 2 2 3 3 3 : ├ ┼ ┼ ┼ ┼ ┼ ┼ ┼ ┼ ┤ ┌ ┬ ┬ ┐ : 4 4 4 5 5 5 6 6 6 09 18 27 : ├ ┼ ┼ ┼ ┼ ┼ ┼ ┼ ┼ ┤ ├ ┼ ┼ ┤ : 4 4 4 5 5 5 6 6 6 => 36 45 54 : ├ ┼ ┼ ┼ ┼ ┼ ┼ ┼ ┼ ┤ ├ ┼ ┼ ┤ : 4 4 4 5 5 5 6 6 6 63 72 81 : ├ ┼ ┼ ┼ ┼ ┼ ┼ ┼ ┼ ┤ └ ┴ ┴ ┘ : 7 7 7 8 8 8 9 9 9 : ├ ┼ ┼ ┼ ┼ ┼ ┼ ┼ ┼ ┤ : 7 7 7 8 8 8 9 9 9 : ├ ┼ ┼ ┼ ┼ ┼ ┼ ┼ ┼ ┤ : 7 7 7 8 8 8 9 9 9 : └ ┴ ┴ ┴ ┴ ┴ ┴ ┴ ┴ ┘ test={{1,1,1,2,2,2,3,3,3},{1,1,1,2,2,2,3,3,3}, {1,1,1,2,2,2,3,3,3},{4,4,4,5,5,5,6,6,6}, {4,4,4,5,5,5,6,6,6},{4,4,4,5,5,5,6,6,6}, {7,7,7,8,8,8,9,9,9},{7,7,7,8,8,8,9,9,9}, {7,7,7,8,8,8,9,9,9}}; (* size: 分割長度 *) myans[mydata_?MatrixQ,size_?IntegerQ]:=Block[{s,l}, s[m_,n_]:=Total@Flatten@mydata[[m;;m+size-1,n;;n+size-1]]; l=Partition[Range[Length@mydata],size][[All,1]]; Table[s[i,j],{i,l},{j,l}] ] MatrixForm@myans[test, 3] (* 直接使用內建Partition函數 *) Map[Total@Flatten[#]&,Partition[test,{3,3},3],{2}] -- 養花種魚數月亮賞星星 http://chungyuandye.twbbs.org -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.232.193.119

01/05 12:43, , 1F
感謝!!! 第一種作法要仔細研究看看@@
01/05 12:43, 1F

01/06 02:49, , 2F
請問一下第二種的#是做什麼用的?
01/06 02:49, 2F

01/06 21:02, , 3F
#搭配& 是pure function的語法 樓上可以找相關資訊了解
01/06 21:02, 3F
文章代碼(AID): #1GvsoQ7G (Mathematica)
討論串 (同標題文章)
文章代碼(AID): #1GvsoQ7G (Mathematica)