오늘/오늘의 함수

[numpy] np.linspace, np.meshgrid np.logspace

hwijin97 2021. 10. 31. 00:13

numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None, axis=0)

 

Parameters :

start : array_like

stop : array_like

num : int, optional

endpoint : bool, optional

retstep : bool, optional

dtype : dtype, optional

axis : int , optional

 

Returns :

samples : ndarray

step : float, optional

 

start ~ stop 까지 num 개수만큼 intervel 을 생성한다.

endpoint =False : stop 을 포함하지 않고 num 개수 만큼 intervel 을 생성한다.

retstep = True : intervel을 return 에 포함한다.

axis : 지정한 축 기준으로 num 개수의 intervel을 생성한다.

np.linspace(2.0, 3.0, num=5)
#array([2.  , 2.25, 2.5 , 2.75, 3.  ])
np.linspace(2.0, 3.0, num=5, endpoint=False)
#array([2. ,  2.2,  2.4,  2.6,  2.8])
np.linspace(2.0, 3.0, num=5, retstep=True)
(array([2.  ,  2.25,  2.5 ,  2.75,  3.  ]), 0.25)
np.linspace([1,2], [3,4], 2, axis=1)
#array([[1., 3.],
#       [2., 4.]])

 

 

 

numpy.meshgrid(*xi, 

                               copy=True, 

                               sparse=False, 

                               indexing='xy')

 

Parameters : 

*xi  : 1-D array_like

indexing : 'xy' or 'ij'  , optional

sparse : bool , optional

copy : bool, optional

 

Return :

X1 ... Xn :  array_like , Xi.shape = ( len(x1) , len(x2), len(x3) ... , len(xn) )

 

각 축의 벡터 x1 ~ xn 개수 N1 ~ Nn 개 만큼 grid로 생성한다.

X1, X2, X3, ... , Xn = np.meshgrid(x1, x2, x3, ... , xn, indexing='ij')
Xi.shape = ( N1, N2, N3, ... , Nn ) 

Xi[0] = xi[0] * np.ones([N1, N2, ... , Ni-1, Ni+1, ... , Nn])
Xi[1] = xi[1] * np.ones([N1, N2, ... , Ni-1, Ni+1, ... , Nn])
...

indexing='ij' 로 설정하면, xx.shape = ( N1 ~ Nn )으로 지정되고,

indexing = 'xy' 로 설정하면 ( 기본값 )  xx.shape = ( N2 , N1 , N3 ... Nn ) 으로 앞 2축이 변경된다.

copy = False 일 경우, xi = Xi 으로 지정된다.

sparse = True 일 경우, Xi.shape = ( 1, 1, ... , Ni , ... , 1 )으로 지정된다.

 

 

 

numpy.logspace(start, stop, num=50, endpoint=True, base=10.0, dtype=None, axis=0)

 

Parameters : 

start : array_like

stop : array_like 

num : integer , optional

endpoint : bool, optional

base : array_like , optional

dtype : dtype

axis : int, optional

 

Returns :

samples :  ndarray

 

start ~ stop 까지  num 개수만큼 base log scale 로 interval 을 생성한다.

endpoint 는 마지막 stop을 포함시킬지 여부이다.

각 원소의 스텝사이즈는 ln(samples) / ln(base) 으로 지정된다.

np.logspace(2.0, 3.0, num=4)
#array([ 100.        ,  215.443469  ,  464.15888336, 1000.        ])
step = np.log(samples) / np.log(10.)
#array([2.        , 2.33333333, 2.66666667, 3.        ])
10 ** step
#array([ 100.        ,  215.443469  ,  464.15888336, 1000.        ])

지수를 linear space 한 것과 동일하다.

np.logspace(2., 3., num=4) == base ** np.linspace(2., 3., num=4)