티스토리 뷰

Python

[Numpy] meshgrid

Dotori.ai 2022. 4. 9. 12:53

numpy.meshgrid 함수를 사용하여 N개의 1차원 좌표 배열를 사용하여 아래와 같은 N차원의 격자 형태의 그래프를 그릴 수 있다.

 

매개변수(Parameter)

meshgrid의 함수 선언을 보면 아래와 같다.

numpy.meshgrid(*xi, copy=True, sparse=False, indexing='xy')

  • *xi: x1, x2, ..., xn
    그리드의 좌표를 나타내는 N개의 1차원 배열
  • indexing: {'xy', 'ij'}, optional
    meshgrid의 indexing 방식을 설정한다. 'xy'는 일반 좌표 표시 형식인 Cartesian indexing으로 meshgrid를 반환하고, 'ij'는 matrix indexing 으로 meshgrid를 반환한다. 출력의 인덱싱을 정의한다. (xy는 일반 좌표 표시 형식으로  - 좌표 또는 ij 행렬)
  • copy: bool, optional
    Defalut는 True이다. False이면, 메모리를 절약하기 위해 배열을 임시 저장한 값을 사용하지 않고, 원본 배열을 그대로 반환한다. 
  • sparse: bool, optional
    Default는 False이다. True이면, 메모리를 절약하기 위해 모든 좌표값을 반환하지 않고 중복되는 값을 제거한 좌표값을 반환한다.(=> 희소 그리드로 반환한다.)

예제

행렬 x1과 x2를 사용하여 X1, X2으를 반환하는 meshgrid를 생성한다.

import numpy as np

x1 = np.linspace(1, 5, 5)
x2 = np.linspace(6, 10, 5)

X1, X2 = np.meshgrid(x1, x2)

print(X1)
"""
[[1. 2. 3. 4. 5.]
 [1. 2. 3. 4. 5.]
 [1. 2. 3. 4. 5.]
 [1. 2. 3. 4. 5.]
 [1. 2. 3. 4. 5.]]
"""

print(X2)
"""
[[ 6.  6.  6.  6.  6.]
 [ 7.  7.  7.  7.  7.]
 [ 8.  8.  8.  8.  8.]
 [ 9.  9.  9.  9.  9.]
 [10. 10. 10. 10. 10.]]
 """

indexing=ij

반환되는 meshgrid의 indexing 방식이 행렬 indexing 방식으로 설정된다.

indexing=xy , indexing=ij 

 

indexing=xy (Cartesian indexing 방식)

(0,0) (1,0) (2,0)
(0,1) (1,1) (2,1)
(0,2) (1,2) (2,2)

indexing=ij (Matrix indexing 방식)

(0,0) (0,1) (0,2)
(1,0) (1,1) (1,2)
(2,0) (2,1) (2,2)

 

import numpy as np

x1 = np.linspace(1, 5, 5)
x2 = np.linspace(6, 10, 5)

X1, X2 = np.meshgrid(x1, x2, indexing='ij')
print(X1)
"""
[[1. 1. 1. 1. 1.]
 [2. 2. 2. 2. 2.]
 [3. 3. 3. 3. 3.]
 [4. 4. 4. 4. 4.]
 [5. 5. 5. 5. 5.]]
"""

print(X2)
"""
[[ 6.  7.  8.  9. 10.]
 [ 6.  7.  8.  9. 10.]
 [ 6.  7.  8.  9. 10.]
 [ 6.  7.  8.  9. 10.]
 [ 6.  7.  8.  9. 10.]]
"""​

Sparse=True

메모리 절약을 위해 희소 그리드를 반환한다.

import numpy as np

x1 = np.linspace(1, 5, 5)
x2 = np.linspace(6, 10, 5)

X1, X2 = np.meshgrid(x1, x2, sparse=True)

print(X1)
"""
[[1. 2. 3. 4. 5.]]
"""

print(X2)
"""
[[ 6.]
 [ 7.]
 [ 8.]
 [ 9.]
 [10.]]
 """

Copy=False

copy는 눈으로 확인이 불가능하다.

메모리를 절약하기 위해 배열을 임시 저장한 값을 사용하지 않고, 원본 배열을 그대로 반환한다. 정도로 이해하고 있으면 되겠다.

'Python' 카테고리의 다른 글

[Numpy] permutation  (0) 2022.04.17