오늘의 주제: Array(리스트안 리스트)1
(명령어: Table, Grid, TableForm, MatrixForm)
-
* 이 영상은 콩글리쉬와 브로큰 잉글리쉬/코리안, 그리고 주변잡음을 포함하고 있습니다.
나레이터: John Lee
학생: 존리
선생님: Jon Lee
* 매스매티카는 무료 로 온라인에서 TRY할 수 있습니다. 자세한 내용은 이 화면 또는 설명에 있는 링크를 참고하세요. - JohnLeeEdu.Tistory.Com/28
순서쌍부터 시작하자
순서쌍은 리스트안에 리스트가 들어가 있다. 이런 리스트안에 또 리스트가 있는 걸 Array라 부른다. 상황에 따라서 행렬(Matrix)이라고 부르기도 한다.
In[284]:= {{1, 2}, {1, 2}, {1, 2}}
Out[284]= {{1, 2}, {1, 2}, {1, 2}}
위의 경우 순서쌍의 갯수를 행의 갯수 --> 3
각각 순서쌍 안 원소의 갯수를 열의 갯수라고 한다. -->2
그래서 3행2열 행렬이 된다. “three by two array” or “three by two matrix”
위의 경우는 모든 순서쌍이 똑 같은 갯수의 원소(2)를 가지고 있다. - 착한 Array 다.
Grid(격자, 좌표, 망)이라는 명령어를 쓰면 Array를 2D로 display해준다. 그래서 행과 열이 분명히 표현된다.
In[285]:= Grid[{{1, 2}, {1, 2}, {1, 2}}]
Out[285]=
1 2 1 2 1 2
In[286]:= Grid[{{1, 2}, {1, 2}, {1, 2}}, Frame → All]
Out[286]=
1 2 1 2 1 2
즉 행은 가로줄, 열은 세로줄이다. 3행 2열 (3 x 2)
Array 손수 만들기
그럼 아래와 같은 3행 5열(3x5) 의 Array를 손수 만들려면 리스트를 어떻게 input 해야 될까?
In[287]:= Grid[Partition[Range[15], 5], Frame → All]
Out[287]=
1 2 3 4 5
6 7 8 9 10 11 12 13 14 15
순서쌍 만들 때랑 똑같은데 순서쌍의 원소가 5개가 된다. 큰 리스트안 순서쌍의 순서는 행의 순서가 되고 각각의 순서쌍안 원소의 순서는 열의 순서가 된다.
In[288]:= array0 = {{1, 2, 3, 4, 5}, {6, 7, 8, 9, 10}, {11, 12, 13, 14, 15}}
Out[288]= {{1, 2, 3, 4, 5}, {6, 7, 8, 9, 10}, {11, 12, 13, 14, 15}}
In[289]:= Grid[array0, Frame → All]
Out[289]=
1 2 3 4 5
6 7 8 9 10 11 12 13 14 15
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
In[291]:= TableForm[array0,
TableHeadings → {Table[Row[{"i", i}], {i, 3}], Table[Row[{"j", j}], {j, 5}]}]
Out[291]//TableForm=
j1 j2 j3 j4 j5
i1 1 2 3 4 5
i2 6 7 8 9 10
i3 11 12 13 14 15
In[292]:= MatrixForm[array0]
Out[292]//MatrixForm=
1 2 3 4 5
6 7 8 9 10 11 12 13 14 15
Array 계산
그런데 Grid라는 명령어는 display 목적이지 계산은 그냥 리스트를 가지고 해야한다. 만약에 각각의 원소에 10을 더하고 싶으면, 또는 다른 계산을 하고 싶으면 Grid 는 빼고 리스트에다 직접하여야 한다.
In[293]:= Grid[array0, Frame → All] + 10
Out[293]= 10 +
1 2 3 4 5
6 7 8 9 10 11 12 13 14 15
In[294]:= array0 + 10
Out[294]= {{11, 12, 13, 14, 15}, {16, 17, 18, 19, 20}, {21, 22, 23, 24, 25}}
In[295]:= array0 + array0
Out[295]= {{2, 4, 6, 8, 10}, {12, 14, 16, 18, 20}, {22, 24, 26, 28, 30}}
In[296]:= Grid[array0 + array0, Frame → All]
Out[296]=
2 4 6 8 10 12 14 16 18 20 22 24 26 28 30
In[297]:= RowGrid[array0, Frame → All], "
+
",Grid[array0, Frame → All], "
=
", Grid[array0 + array0, Frame → All]Out[297]=
1 2 3 4 5
6 7 8 9 10 11 12 13 14 15
+
16 27 38 49 105 11 12 13 14 15=
12 14 16 18 202 4 6 8 10 22 24 26 28 30Array 에 Index 붙이기
Array에 있는 원소의 위치를 지칭할 때 첫번째, 두번째, 세번째 원소 이런식으로 하지않고 몇행 몇열 의 원소라고 한다. 행의 index를 i, 열의 index를 j라고 한다면 위의 array에 있는 모든 원소는 {i,j}로서 그 위치를 나타낼 수 있다.
In[298]:= grid0
Out[298]=
1 2 3 4 5
6 7 8 9 10 11 12 13 14 15
예를 들어 {i, j} 가 {2, 3}이면 그 원소는 8이 된다.
예를 들어 {i, j} 가 {3, 5}이면 그 원소는 15가 된다.
총 몇행 몇열의 Array인지를 보려면 Dimensions 을 사용하면 된다.
In[299]:= Dimensions[array0]
Out[299]= {3, 5}