본문 바로가기
프로그래밍 ( Programming )/Python

[Python] numpy.meshgrid란

by Jayce_choi 2021. 1. 11.
반응형

numpy의 meshgrid 함수는 1차원 좌표 배열 (x1, x2..... xn)에서 N차원 직사각형 격자를 만드는 함수입니다. 

매개변수 종류

x1, x2, .... 배열, 그리드의 좌표를 나타내는 1차원 배열
indexing  배열, 출력의 인덱싱을 정의 ( xy - 좌표 또는 ij - 행렬 )
sparse 부울, 메모리를 절약하기 위해 희소 그리드를 반환
( sparse = True ) 
copy 부울, 메모리를 절약하기 위해 원래 배열에 대한 뷰가 반환
( copy = True )

 


meshgrid() 메서드를 이용한 meshgrid 생성

행렬x2 y2를 생성하여 각 행렬의 해당 요소 쌍이 그리드에 있는 모든 x1 및y1 좌표를 제공합니다.

import numpy as np

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

x2,y2 = np.meshgrid(x1,y1)

print(x2)
"""
[[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.shape)
# (5, 5)

print(y2)
"""
[[ 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.]]
 """

print(y2.shape)
# (5, 5)

 

indexing = 'ij'를 이용한 meshgrid 생성해보기 

쌍이 행렬 요소의 인덱스에서 두 요소의 해당 요소를 형성하도록 행렬x2 y2를 생성합니다.

import numpy as np

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

x2,y2 = np.meshgrid(x1,y1,indexing='ij')

print(x2)
"""
[[1. 1. 1. 1. 1.]
 [2. 2. 2. 2. 2.]
 [3. 3. 3. 3. 3.]
 [4. 4. 4. 4. 4.]]
 """

print(x2.shape)
# (4, 5)

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

print(y2.shape)
# (4, 5)

 

Meshgrid에서 sparse=True를 설정하여 생성해보기

sparse=True를 설정하면 메모리를 절약하기 위해 희소 그리드를 반환합니다.

import numpy as np

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

x2,y2 = np.meshgrid(x1,y1,sparse=True)

print(x2)
# [[1. 2. 3. 4.]]

print(x2.shape)
# (1, 4)

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

print(y2.shape)
# (5, 1)

 

 

Reference : numpy.org/doc/stable/reference/generated/numpy.meshgrid.html

 

numpy.meshgrid — NumPy v1.19 Manual

For vectors x1, x2,…, ‘xn’ with lengths Ni=len(xi) , return (N1, N2, N3,...Nn) shaped arrays if indexing=’ij’ or (N2, N1, N3,...Nn) shaped arrays if indexing=’xy’ with the elements of xi repeated to fill the matrix along the first dimension f

numpy.org

반응형

댓글