IDL/배열 생성 및 처리

원소값들을 직접 표기하여 배열을 생성하는 법 (3차원까지)

이상우_idl 2023. 11. 29. 20:46
728x90
반응형

IDL에서 배열(Array)을 생성하는데 있어서는 각종 배열 생성용 함수들(INTARR, INDGEN 등)을 이용하는 방법도 있지만, 배열을 구성할 원소값들을 내가 직접 표기하여 작성하는 방법도 있습니다. 먼저 1차원 배열의 예를 보면 다음과 같습니다.

 

IDL> a = [64, 81, 92, 77, 59]
IDL> HELP, a
A               INT       = Array[5]
IDL> PRINT, a
      64      81      92      77      59

 

이와 같이 꺾쇠괄호를 사용하여 그 안에 원소값들을 따옴표로 구분하여 표기하는 방식입니다. 여기서는 5개의 값들로 구성된 정수형 배열을 생성해본 것입니다. 그러면 이번에는 원소값들을 직접 표기하여 2차원 배열을 생성하는 방법을 살펴봅시다. 이를 위해서는 꺾쇠괄호를 2중으로 사용해야 합니다. 예제를 보면 다음과 같습니다.

 

IDL> a = [[64, 81, 92], [77, 59, 46]]
IDL> HELP, a
A               INT       = Array[3, 2]
IDL> PRINT, a
      64      81      92
      77      59      46

 

여기서는 3x2의 구조를 갖는 2차원 배열을 원소값들을 직접 표기하여 생성한 것입니다. 이와 같이 2차원 배열을 구성할 원소들을 행(Row)별로 모아서 각각 꺾쇠괄호로 감싸고, 이러한 행들을 전체 꺾쇠괄호로 감싸는 방식이라는 점이 핵심입니다. 이해를 돕기 위하여 위의 내용에서 꺾쇠괄호의 쌍을 구분하기 좋게 몇가지 색상들을 사용하여 표시해보면 다음과 같습니다.

 

a = [ [ 64, 81, 92 ], [ 77, 59, 46 ] ]

 

여기서는 안쪽 꺾쇠괄호들은 파란색, 바깥쪽 꺾쇠괄호는 오렌지색으로 표시하였습니다. 이러한 방식으로 안쪽과 바깥쪽 꺾쇠괄호의 관계를 확인해두면 됩니다.

 

그러면 이번에는 3차원 배열로 가봅시다. 3차원 배열의 경우라면 꺾쇠괄호를 3중으로 사용해야 할 것이라는 예상은 충분히 할 수 있습니다. 사실 원리 자체는 2차원 배열의 경우와 동일합니다. 다만 표기할 내용이 좀 더 복잡해질 뿐입니다. 예제를 보면 다음과 같습니다.

 

IDL> a = [[[64, 81, 92], [77, 59, 46]], [[28, 89, 55], [92, 67, 83]], $

   [[57, 62, 85], [32, 74, 53]], [[68, 97, 75], [51, 76, 66]]]
IDL> HELP, a
A               INT       = Array[3, 2, 4]

 

여기서는 3x2x4의 구조를 갖는 3차원 배열을 원소값들을 직접 표기하여 생성한 것입니다. 3차원 배열을 도식적으로 생각해보면 일종의 육면체(Cuboid)와 같은 입체적 도형으로 비유할 수 있습니다. 그리고 이것은 여러 개의 평면(Plane) 또는 층(Layer)들이 차곡차곡 쌓인 것과 같습니다. 그리고 각 평면은 2차원 배열에 해당된다고 볼 수 있습니다. 따라서 3차원 배열을 구성할 원소들을 층(Layer)별로 모아서 각각 꺾쇠괄호로 감싸고, 이러한 층들을 전체 꺾쇠괄호로 감싸는 방식이 될 것입니다. 물론 각 층에 해당되는 2차원 배열은 앞서 제시된 방법대로 정의해주면 됩니다. 이렇게 생성된 3차원 배열 a의 모든 원소값들을 출력해보면 다음과 같습니다.

 

IDL> PRINT, a
      64      81      92
      77      59      46

      28      89      55
      92      67      83

      57      62      85
      32      74      53

      68      97      75
      51      76      66

 

역시 이번에도 이해를 돕기 위하여 위의 내용에서 꺾쇠괄호의 쌍을 구분하기 좋게 몇가지 색상들을 사용하여 표시해보면 다음과 같습니다.

 

a = [ [ [ 64, 81, 92 ], [ 77, 59, 46 ] ], [ [28, 89, 55 ], [ 92, 67, 83 ] ], $

   [ [ 57, 62, 85 ], [ 32, 74, 53 ] ], [ [ 68, 97, 75 ], [ 51, 76, 66 ] ] ]

 

여기서는 가장 안쪽의 꺾쇠괄호들은 파란색, 그 바깥쪽의 꺾쇠괄호들은 오렌지색으로 표시하였습니다. 그리고 가장 바깥쪽의 꺾쇠괄호는 빨간색으로 표시하였습니다. 이러한 방식으로 꺾쇠괄호들의 관계를 확인해두면 됩니다.

 

지금까지 배열의 원소값들을 직접 표기하여 배열을 생성하는 방법 및 예제를 1차원부터 3차원까지 살펴보았는데요. 같은 원리로 생각한다면 4차원, 5차원 등의 배열들에 대해서도 못할 것은 없습니다. 다만 표기해야 할 내용이 더 복잡해질 뿐입니다. 사실 실제 현장에서의 작업에서는 배열 데이터를 외부 자료로부터 불러오는 경우가 더 많습니다. 오늘처럼 원소값들을 직접 표기하는 방식을 사용하는 경우는 실전에서는 그리 많지는 않습니다. 다만 배열의 원리를 이해하는데 있어서 각종 예제들을 만들 때에는 이러한 방법이 유용할 수도 있기 때문에, 배열의 생성 원리에 대한 이해를 돕는다는 관점에서 잘 알아두시면 좋을 것 같습니다.

반응형