IDL로 작업을 하다보면 서로 다른 두 배열을 합쳐서 새로운 배열을 만들어야 하는 경우가 종종 있습니다. 사실 이러한 배열 합치기는 비교적 간단하게 할 수 있는데, IDL을 꽤 사용했다 하더라도 잘 모르는 경우도 많은 것 같습니다. 마침 얼마전에 IDL User 게시판에 이러한 질문이 올라와서 제가 답을 올리긴 했는데, 여기서 그 방법을 좀 더 도식적으로 소개하고자 합니다.
먼저 1차원 배열을 서로 합치는 경우를 봅시다. 다음 그림과 같이 배열 A는 5개의 원소를 갖고, 배열 B는 3개의 원소를 갖는데, 이 둘을 합쳐 8개의 원소를 갖는 C라는 배열로 만드는 경우입니다. 편의상 모두 INTARR 함수를 사용하여 모든 원소값이 0인 정수형 배열로 가정하겠습니다.
A = INTARR(5)
B = INTARR(3)
그러면 C는 다음과 같이 꺽쇠괄호인 []를 사용하여 얻을 수 있습니다.
C = [A, B]
어떻습니까? 매우 간단하죠? 사실 이 방법은 많이들 아실 수도 있습니다. 그런데 2차원 배열일 경우는 잘 모르시는 경우가 많은 것 같습니다. 알고보면 별로 복잡하진 않습니다. 그냥 요령에 맞게 []를 사용하면 됩니다. 다음 그림과 같이 5X3의 구조를 갖는 A라는 배열과 3X3의 구조를 갖는 B라는 배열을 가로방향(Row)으로 서로 합쳐봅시다.
A = INTARR(5, 3)
B = INTARR(3, 3)
그러면 C는 역시 다음과 같이 꺾쇠괄호인 []를 사용하여 얻을 수 있습니다. 사실 여기서는 []가 사용된 모습은 위와 같습니다.
C = [A, B]
다만 2차원 배열끼리 합치는 경우 가로(Row) 또는 세로(Column) 방향중 어느 한 방향으로는 갯수가 서로 같아야 합니다. 위의 경우는 A의 세로방향 갯수(3)와 B의 세로방향 갯수(3)가 서로 같은 상황에서, A와 B를 가로방향(Row)으로 붙여버린 경우입니다. 그런데 2차원 배열의 경우는 세로방향(Column)으로 붙이는 경우도 있습니다. 다만 이를 위해서는 A의 가로방향 갯수와 B의 가로방향 갯수가 서로 같아야 합니다. 즉, 다음 그림과 같은 경우입니다.
그러면 이와 같은 병합은 다음과 같이 []를 약간 다른 방식으로 사용하여 이루어집니다. 여기서 []가 사용된 모습을 유의해서 보시기 바랍니다. 위의 경우와 비교한다면 그냥 A, B 각각에 대하여 []를 한번 더 사용했다는 차이밖에 없습니다.
C = [[A], [B]]
'IDL > Programming' 카테고리의 다른 글
| 알아두면 편리한 문자처리 함수들 [1] (0) | 2013.01.15 |
|---|---|
| 누적에 의한 배열 생성법 (0) | 2012.07.08 |
| 키워드(keyword)와 인자(argument)에 관하여 (0) | 2012.01.13 |
| _EXTRA라는 키워드에 관하여 (0) | 2012.01.09 |
| COMPILE_OPT의 활용 (0) | 2011.12.13 |